题意:给你m张画,n个画家,画有编号,每位画家必须要按画的编号和画家的编号作画,一张画不能同时多个人,一个人也不能同时多幅画,问你每幅画完成的时间
解题思路:简单dp
解题代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 // File Name: 416b.cpp 2 // Author: darkdream 3 // Created Time: 2014年07月30日 星期三 16时11分13秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 25 using namespace std; 26 int p[50004][6]; 27 int dp[6]; 28 int main(){ 29 int m , n ; 30 scanf("%d %d",&m,&n); 31 for(int i = 1;i <= m;i ++) 32 { 33 for(int j = 1;j <= n ;j ++) 34 { 35 scanf("%d",&p[i][j]); 36 } 37 } 38 memset(dp,0,sizeof(dp)); 39 for(int i = 1;i <= m;i ++) 40 { 41 dp[1] = dp[1] + p[i][1]; 42 for(int j = 2;j <= n;j ++ ) 43 { 44 dp[j] = max(dp[j-1],dp[j]) + p[i][j]; 45 } 46 printf("%d ",dp[n]); 47 } 48 49 return 0; 50 }