社区讨论
建议加强数据
P1133教主的花园参与者 4已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo7s7wbj
- 此快照首次捕获于
- 2023/10/27 06:54 2 年前
- 此快照最后确认于
- 2023/10/27 06:54 2 年前
RT,我通过将第一个位置挪到第n+1个位置解决了环形
CPP#include <bits/stdc++.h>
#define ll long long
const int MAXN = 301010;
const int inf = 1e9 + 7;
using namespace std;
int f[MAXN][3][2];
int n, ans;
int a[MAXN][3];
inline int read( ){
int x = 0 ; short w = 0 ; char ch = 0;
while( !isdigit(ch) ) { w|=ch=='-';ch=getchar();}
while( isdigit(ch) ) {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return w ? -x : x;
}
int main( ){
n = read( );
for( int i = 1; i <= n; i++ )
for( int j = 0; j <= 2; j++ )
a[i][j] = read( );
a[n+1][0] = a[1][0];
a[n+1][1] = a[1][1];
a[n+1][2] = a[1][2];
for( int i = 2; i <= n + 1; i++ ){
f[i][0][0] = max( f[i-1][2][1], f[i-1][1][1] ) + a[i][0];
f[i][1][1] = f[i-1][0][0] + a[i][1];
f[i][1][0] = f[i-1][2][1] + a[i][1];
f[i][2][1] = max( f[i-1][1][0], f[i-1][0][0] ) + a[i][2];
}
for( int i = 0; i <= 2; i++ )
for( int j = 0; j <= 1; j++ )
ans = max( ans, f[n+1][i][j] );
cout << ans;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...