您的位置:首页 > 其它

[动态规划]ZOJ 2972 Hurdles of 110m

2014-02-24 19:58 495 查看
对于动归,总是有点抓不住重点的感觉。在此,希望可以找个大神教教我。这题是看懂了各位大神的代码之后,才写出来的。。。

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;

int main()
{
int cas, n, m, t1, t2, t3, f1, f2, k, min_cost;
int dp[200][200];
scanf("%d", &cas);
while(cas--)
{
scanf("%d%d", &n, &m);
for(int i = 0; i <= n; i ++)
for(int j = 0; j <= m; j ++)
dp[i][j] = INF;
dp[0][m] = 0;
for(int i = 1; i <= n; i ++)
{
scanf("%d%d%d%d%d", &t1, &t2, &t3, &f1, &f2);
for(int j = 0; j <= m; j++)
{
k = j - f1;
if(k >= 0) dp[i][k] = min(dp[i][k], dp[i-1][j] + t1);
k = j;
dp[i][k] = min(dp[i][k], dp[i-1][j] + t2);
k = j + f2;
if(k > m) k = m;
dp[i][k] = min(dp[i][k], dp[i-1][j] + t3);
}
}
min_cost = INF;
for(int i = 0; i <= m;  i ++)
{
if(dp
[i] < min_cost)
min_cost = dp
[i];
}
printf("%d\n", min_cost);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: