Tyvj 1203 机器分配(DP)
题目还是比较水的,好久没有很短的时间就看出状态转移了。。。然后就是注意一下,机器越多,生产的价值不一定高。。。写了一个不靠谱的程序又是只有一组没过。。。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 int p[101][101],dp[101][101]; 6 int main() 7 { 8 int n,m,i,j,k,ans; 9 scanf("%d%d",&n,&m); 10 for(i = 1;i <= n;i ++) 11 { 12 for(j = 1;j <= m;j ++) 13 scanf("%d",&p[i][j]); 14 } 15 for(i = 1;i <= m;i ++) 16 dp[1][i] = p[1][i]; 17 for(i = 2;i <= n;i ++) 18 { 19 for(j = 1;j <= m;j ++) 20 { 21 dp[i][j] = dp[i-1][j]; 22 for(k = 1;k <= j;k ++) 23 { 24 if(dp[i][j] < dp[i-1][j-k] + p[i][k]) 25 dp[i][j] = dp[i-1][j-k] + p[i][k]; 26 } 27 } 28 } 29 ans = 0; 30 for(i = 1;i <= m;i ++) 31 { 32 if(ans < dp[n][i]) 33 ans = dp[n][i]; 34 } 35 printf("%d\n",ans); 36 return 0; 37 }