poj1018
그러면 dp[i][j]는 무엇을 의미할까요?처음에는 앞의 2차원 상태의 대표를 생각했지만 dp[i][j]가 무엇을 대표해야 할지 생각하지 못했다.마땅한 생각은 최소 대역폭이 표시된 이상 최대 B/P를 구하기 위해서는 B가 이미 알고 있다는 것이다.그래서 우리
dp[i][j]는 제I품 처리를 대표하고 최소 대역폭은 j의 최소 총 가격이다. 최소 대역폭은 입력 장치에서만 얻을 수 있기 때문에 dp[i][j]=-1로 최소 대역폭이 없다는 것을 표시해야 한다.그러면 상태 방정식은 dp[i][j]=min(dp[i-1][k]+price[k])(그중 dp[i-1][k]가 우선이기 때문에
도달할 수 있다. 그리고 도달한 후에 상태의 이동을 진행하면 dp[i][k]로 이동할 수 있다. 만약에 m제품 제품의 대역폭이 이 최소 대역폭보다 크거나 dp[i][min]로 이동하면 m제품 대역폭이 최소 대역폭보다 작다는 뜻이다.마지막으로 가능한 모든 최소 대역폭을 열거하여
그중의 최대치.
#include <stdio.h>
#include <string.h>
#define MAX_NUMBER 105
#define MAX_BANDWIDTH 10005
#define min(a, b) ((a) > (b))?(b) : (a)
#define max(a, b) ((a) > (b))?(a) : (b)
int dp[MAX_NUMBER][MAX_BANDWIDTH];
int bandwidth[MAX_NUMBER];
int price[MAX_NUMBER];
int main() {
int test_case;
int i, j, k, device_number, manufacture, max_bandwidth, min_number;
double ans, temp;
scanf("%d", &test_case);
while (test_case--) {
memset(dp, -1, sizeof(dp));
scanf("%d", &device_number);
max_bandwidth = 0;
for (i = 1; i <= device_number; i++) {
scanf("%d", &manufacture);
for (j = 0; j < manufacture; j++) {
scanf("%d%d", &bandwidth[j], &price[j]);
if (bandwidth[j] > max_bandwidth) {
max_bandwidth = bandwidth[j];
}
}
if (i == 1) {
dp[i - 1][max_bandwidth] = 0;
}
for (j = 1; j <= max_bandwidth; j++) {
if (dp[i - 1][j] != -1) {
for (k = 0; k < manufacture; k++) {
min_number = min(j, bandwidth[k]);
if (dp[i][min_number] != -1) {
dp[i][min_number] = min(dp[i][min_number], dp[i - 1][j] + price[k]);
}
else {
dp[i][min_number] = dp[i - 1][j] + price[k];
}
}
}
}
}
ans = 0;
for (j = 1; j <= max_bandwidth; j++) {
if (dp[device_number][j] != -1) {
temp = 1.0 * j / (dp[device_number][j]);
if (temp > ans) {
ans = temp;
}
}
}
printf("%.3lf
", ans);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.