以前做感觉非常难,现在发现我竟然能独立做普及组的题目了
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int n,m,p; 6 int f[1001],val[1001][1001],cst[1001]; 7 int main() 8 { 9 cin>>n>>m>>p; 10 memset(f,128,sizeof(f)); 11 for(int i=1;i<=n;i++) 12 for(int j=1;j<=m;j++) 13 cin>>val[i][j]; 14 for(int i=1;i<=n;i++) cin>>cst[i]; 15 f[0]=0; 16 for(int i=1;i<=m;i++) 17 for(int j=1;j<=n;j++) 18 { 19 int id=j-1;if(!id) id=n; 20 int v=val[id][i]; 21 for(int k=1;k<=p;k++) 22 { 23 if(i-k<0) break; 24 f[i]=max(f[i],f[i-k]+v-cst[id]); 25 id--;if(!id) id=n; 26 v+=val[id][i-k]; 27 } 28 } 29 cout<<f[m]<<endl; 30 return 0; 31 }