您的位置:首页 > 其它

HDU 2571 命运 水DP

2012-03-12 17:35 337 查看
消极题解凑数= =

话说今天的水题有点多了= =

本来想用最短路做的,但是不想那么麻烦,滚动数组也不想用,能水就水吧。记得以前做过一道类似的,不过是走路方针可以斜线,飞跃什么的,各种神。不过是BFS+队列罢了+GCD 罢了罢了还是水,不说了....

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;

int max( int a,int b ){ return a>b?a:b; }

int main()
{
int T;
scanf( "%d",&T );
while( T-- )
{
int n,c;
int value[22][1111];
int f[22][1111];
scanf( "%d %d",&n,&c );
for( int i=1;i<=n;i++ )
for( int j=1;j<=c;j++ )
{
scanf( "%d",&value[i][j] );
f[i][j]=-10000;
}
f[1][1]=value[1][1];
for( int i=1;i<=n;i++ )
for( int j=1;j<=c;j++ )
{
f[i][j+1]=max( f[i][j+1],f[i][j]+value[i][j+1] );
for( int k=j+j;k<=c;k+=j )
f[i][k]=max( f[i][k],f[i][j]+value[i][k] );
f[i+1][j]=f[i][j]+value[i+1][j];
}
printf( "%d\n",f
[c] );
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c