hdu 2571

来源:互联网 发布:重庆大学怎么样知乎 编辑:程序博客网 时间:2024/05/17 08:56
#include<iostream>#include<limits.h>using namespace std;int n,m,i,j,k;int C;int mat[25][1005];int dp[25][1005];int max(int a,int b){return a>b?a:b;}int main(){    cin>>C;    while(C--){        memset(dp,0,sizeof(dp));        cin>>n>>m;        for(i=1;i<=n;i++)            for(j=1;j<=m;j++){                cin>>mat[i][j];                dp[i][j]=mat[i][j];            }        for(i=1;i<=n;i++)            for(j=1;j<=m;j++){                int big=-INT_MAX;                for(k=1;k<j;k++){                    if(j%k==0||(j>1&&k==j-1)){                        big=max(big,dp[i][k]);                    }                }                if(i>1)                    big=max(big,dp[i-1][j]);                if(i!=1||j!=1)                    dp[i][j]+=big;            }        cout<<dp[n][m]<<endl;        //system("pause");    }}