Wa了10次。。。
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int nasce,n,m,mode;
int number[21][1010];
int dp[21][1010];
void DP( )
{
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
{
if((i == 1) && (j == 1))
dp[i][j] = number[i][j];
else
{
mode = -101;
for(int k = 1; k < j; k++)
if(j % k == 0)
mode = max(mode,dp[i][k]);
dp[i][j] = max(mode,max(dp[i][j - 1],dp[i - 1][j])) + number[i][j];
}
}
printf("%d\n",dp[n][m]);
}
int main( )
{
scanf("%d",&nasce);
while(nasce--)
{
scanf("%d %d",&n,&m);
memset(dp,0xC0,sizeof(dp));
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
scanf("%d",&number[i][j]);
DP( );
}
return 0;
}