开O2,开O2,开O2
重要的事情说三遍
1 #include <set> 2 #include <map> 3 #include <cmath> 4 #include <queue> 5 #include <vector> 6 #include <cstdio> 7 #include <cstdlib> 8 #include <cstring> 9 #include <iostream> 10 #include <algorithm> 11 using namespace std; 12 int s,d,m,ans; 13 int p[51][11],f[500001]; 14 int main(){ 15 scanf("%d%d%d",&s,&d,&m); 16 for(int i=1;i<=s;i++)for(int j=1;j<=d;j++)scanf("%d",&p[i][j]); 17 for(int i=2;i<=d;i++){ 18 ans=0; 19 memset(f,0,sizeof(f)); 20 for(int j=1;j<=s;j++) 21 for(int k=p[j][i-1];k<=m;k++){ 22 f[k]=max(f[k],f[k-p[j][i-1]]+p[j][i]-p[j][i-1]); 23 ans=max(ans,f[k]); 24 } 25 m+=ans; 26 } 27 printf("%d ",m); 28 return 0; 29 }