HDU 2571 命运
这题很DP就是跟前面一样一步一步来,先找到一部分,然后把这部分扩大,最后至全部,最终找出全局最优解,这里要注意,他给的测试数据太淫荡了,其实|K|>100,所以max初始化时给个1111吧
#include<stdio.h> #include<string.h> int n,num[25][1024],m; int main( ) { int t; scanf( "%d",&t ); while( t-- ) { scanf( "%d%d",&n,&m ); memset( num,0,sizeof( num ) ); for( int i = 1; i <= n; ++i ) for( int j = 1; j <= m; ++j ) scanf( "%d",&num[i][j] ); for( int i = n; i; --i ) for( int j = m; j; --j ) { int max = -1111; if( i == n&& j == m ) max = 0; if( i < n ) if( num[i+1][j] > max ) max = num[i+1][j]; if( j < m ) if( num[i][j+1] > max ) max = num[i][j+1]; int c = j + j; while( c <= m ) { if( num[i][c] > max ) max = num[i][c]; c += j;//这里不要写错了,我把这里写错了,结果一直wa } num[i][j] += max; // printf( "%d %d = %d\n",i,j,num[i][j] ); } printf( "%d\n",num[1][1] ); } return 0; }
本人还是新手 ,转载请注明来自Lvsi‘s home