社区讨论

求调 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 条回复,欢迎继续交流。

正在加载回复...