想不通题解的思路过程,不知道自己的思路哪里错了

P1133 教主的花园

运气好罢了(指题解) 这组样例题解会输出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


|