hdu2573--命运 ( dp)
数据有点水了,n*m*m的代码都过
View Code
1 //Accepted 2571 31MS 292K 1458 B G++ 2 #include <stdio.h> 3 #include <string.h> 4 #define inf 0x7fffffff 5 int n,m,dp[21][1001]; 6 inline int max(int a,int b) { return a > b ? a : b ; } 7 void solve() 8 { 9 for(int i = 1; i <= n; ++i) 10 for(int j = 1; j <= m; ++j) 11 { 12 if(i==1 && j==1) 13 continue; 14 else 15 { 16 int maxx = -inf; 17 if( i - 1 > 0) 18 { 19 maxx = max(maxx,dp[i-1][j] + dp[i][j]); 20 } 21 if( j - 1 > 0) 22 { 23 for(int k = 1; k < j; ++k) 24 { 25 if(j % k == 0 || k + 1 == j) 26 { 27 maxx = max(maxx,dp[i][k] + dp[i][j]); 28 } 29 } 30 } 31 dp[i][j] = maxx; 32 } 33 } 34 } 35 36 int main(void) 37 { 38 int c; 39 scanf("%d",&c); 40 while(c--) 41 { 42 scanf("%d%d",&n,&m); 43 for(int i = 1; i <= n; ++i) 44 for(int j = 1; j <= m; ++j) 45 scanf("%d",&dp[i][j]); 46 solve(); 47 printf("%d\n",dp[n][m]); 48 } 49 return 0; 50 }


浙公网安备 33010602011771号