P5761 题解
Gaode_Sean · · 题解
对于这道题,先求出每一列的最大值,注意初始化为负无穷而不是
设每一行的最大值为
转移方程:
最后的答案即是
Code:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[101][20001],b[20001],dp[20001],ans,mx;
int main()
{
cin>>n>>m;
m--;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) cin>>a[i][j];
}
for(int i=1;i<=m;i++) b[i]=-1e9;
for(int j=1;j<=m;j++){
for(int i=1;i<=n;i++) b[j]=max(b[j],a[i][j]);
}
for(int i=1;i<=m;i++){
dp[i]=max(mx,dp[i-1])+b[i];
ans=max(ans,dp[i]);
}
cout<<ans;
return 0;
}