社区讨论
求调 ABC D
学术版参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mjoecdyw
- 此快照首次捕获于
- 2025/12/27 22:29 3 个月前
- 此快照最后确认于
- 2025/12/28 12:20 3 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=3e5+5;
int a[N],b[N],c[N],qa[N],qb[N],qc[N],st[20][N],lg2[N];
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
for(int i=2;i<=3e5;i++) lg2[i]=lg2[(i>>1)]+1;
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],qa[i]=qa[i-1]+a[i];
for(int i=1;i<=n;i++) cin>>b[i],qb[i]=qb[i-1]+b[i];
for(int i=1;i<=n;i++) cin>>c[i],qc[i]=qc[i-1]+c[i];
int ans=0;
for(int i=1;i<=n;i++)
st[0][i]=qb[i]-qc[i];
for(int i=1;i<=19;i++)
{
for(int j=1;j<=n;j++)
{
if(j+(1<<i)-1>n) continue;
st[i][j]=max(st[i-1][j],st[i-1][j+(1<<(i-1))]);
}
}
for(int i=1;i<n-1;i++)
{
int res=qa[i]-qb[i];
int l=i+1;
int r=n-1;
int cc=lg2[r-l+1];
res+=max(st[cc][l],st[cc][r-(1<<cc)+1]);
ans=max(ans,res);
}
cout<<ans+qc[n];
return 0;
}
WA*4
回复
共 3 条回复,欢迎继续交流。
正在加载回复...