当前位置: 代码迷 >> 综合 >> HDU 2571 命运 水DP
  详细解决方案

HDU 2571 命运 水DP

热度:85   发布时间:2024-01-20 20:37:36.0

消极题解凑数= =

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

本来想用最短路做的,但是不想那么麻烦,滚动数组也不想用,能水就水吧。记得以前做过一道类似的,不过是走路方针可以斜线,飞跃什么的,各种神。不过是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[n][c] );}return 0;
}