运气好罢了(指题解)
这组样例题解会输出36(上次:28)
但是你手动一下不可能是
4 1 9 1 1 9 1 1 1 9 9 1 1
题解是错的
这个是过了的code:
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5+9;
int a[N][4],n,dp[N][5][2],ans;
main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i][1]>>a[i][2]>>a[i][3];
for(int k=1;k<=3;k++)
{
dp[1][k][1]=dp[1][k][0]=a[1][k];
for(int i=2;i< n;i++)
{
dp[i][1][0]=max(dp[i-1][2][1],dp[i-1][3][1])+a[i][1];
dp[i][2][0]=dp[i-1][3][1]+a[i][2];
dp[i][2][1]=dp[i-1][1][0]+a[i][2];
dp[i][3][1]=max(dp[i-1][2][0],dp[i-1][1][0])+a[i][3];
}
for(int i=1;i<=3;i++)
{
if(i==k)continue;
if(i>k)
{
dp[n][i][1]=max(dp[n-1][i-1][0],dp[n-1][i-2][0])+a[n][i];
ans=max(ans,dp[n][i][1]);
}
if(i<k)
{
dp[n][i][0]=max(dp[n-1][i+1][1],dp[n-1][i+2][1])+a[n][i];
ans=max(ans,dp[n][i][0]);
}
}
memset(dp,0,sizeof(dp));
}
cout<<ans<<endl;
return 0;
}
```
by 卞云珑 @ 2022-06-02 19:14:13