#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cstring>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
#define PF(x) (scanf("%d",&x))
#define PT(x,y) (scanf("%d%d",&x,&y))
#define PR(x) (printf("%d\n",x))
#define PRT(x,y)(printf("%d %d\n",x,y))
#define PB(x)(scanf("%I64d",&x))
#define PRB(x)(printf("%I64d\n",(x)))
typedef __int64 LL;
#define N 200005
#define M 105
#define Mod 1000
#define Inf 0x7fffffff
int n,m;
int ar[N];
int ma[N][2];
int dp[N][2];
int f[N];
void reinit()
{
memset(ar,0,sizeof(ar));
memset(ma,0,sizeof(ma));
memset(dp,0,sizeof(dp));
memset(f,0,sizeof(f));
}
int maxx(int a,int b)
{
return a>b?a:b;
}
void init()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
reinit();
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
PF(ar[j]);
memset(ma,0,sizeof(ma));
ma[0][0] = 0;
ma[0][1] = ar[0];
for(int j=1;j<m;j++)
{
if(j==1)
{
ma[j][0] = maxx(ma[0][0],ma[0][1]);
ma[j][1] = ar[j];
continue;
}
ma[j][0] = maxx(ma[j-1][0],ma[j-1][1]);
ma[j][1] =ma[j-1][0]+ar[j];
}
f[i] = maxx(ma[m-1][0],ma[m-1][1]);
}
int masum = -1;
dp[0][0] = 0;
dp[0][1] = f[0];
dp[1][0] = maxx(dp[0][0],dp[0][1]);
dp[1][1] = f[1];
for(int j=2;j<n;j++)
{
dp[j][0] = maxx(dp[j-1][0],dp[j-1][1]);
dp[j][1] = dp[j-1][0]+f[j];
}
masum = maxx(dp[n-1][0],dp[n-1][1]);
PR(masum);
}
return ;
}
int main()
{
init();
return 0;
}
hdu 2845
最新推荐文章于 2019-07-19 16:42:28 发布