传送门:bzoj3997
代码
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=1010;
int a[N][N],T,n,m;
ll f[N][N],ans;
inline ll max(ll x,ll y){return x>y?x:y;}
int main(){
scanf("%d",&T);
while(T--){
ans=0;
memset(f,0,sizeof(f));
scanf("%d%d",&n,&m);
for(int j,i=1;i<=n;++i)
for(j=1;j<=m;++j)
scanf("%d",&a[i][j]);
for(int j,i=1;i<=m;++i){
for(j=n;j;j--)
f[j][i]=max(f[j][i-1],f[j+1][i-1]+a[j][i]);
for(j=n;j;j--)
f[j][i]=max(f[j][i],f[j+1][i]);
ans=max(ans,f[1][i]);
}
printf("%lld\n",ans);
}
}