原题链接
圆环独立集
#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int n,a[N];
int f[N][2];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
f[1][0]=0;
f[1][1]=a[1];
for(int i=2;i<=n-1;i++){
f[i][0]=max(f[i-1][0],f[i-1][1]);
f[i][1]=f[i-1][0]+a[i];
}
f[n][0]=max(f[n-1][0],f[n-1][1]);
int ans=max(f[n][0],f[n][1]);
cout<<ans<<endl;
return 0;
}
如上,求神犇救命