专栏文章
P13507 [OOI 2024] Three Arrays 题解
P13507题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minrqxp2
- 此快照首次捕获于
- 2025/12/02 07:17 3 个月前
- 此快照最后确认于
- 2025/12/02 07:17 3 个月前
首先考虑 怎么做。
不妨令 ,。设 ,那么显然 所能取到的最大值为:
按照 从小到大的顺序计算即可。
接下来考虑不保证 怎么做。
显然最终的 形如 , 形如 ,所以我们可以把 直接看作 ,把 直接看作 ,这样就转化成了 的情况,同上述方法计算即可。
时间复杂度 。
Cconst int N=1e5+5;
int n,d[N];
pair <ll,ll> p[N];
ll suf[N],l[N],r[N],mi,ans=0;
void solve(){
cin>>n;
for(int i=1;i<=n;i++) cin>>d[i];
for(int i=n;i>=1;i--) suf[i]=suf[i+1]+d[i];
for(int i=1;i<=n;i++) cin>>l[i],l[i]+=suf[i+1];
for(int i=1;i<=n;i++) cin>>r[i],r[i]+=suf[i+1];
cin>>l[0]>>r[0],l[0]+=suf[1],r[0]+=suf[1],mi=r[0];
for(int i=0;i<=n;i++) p[i]={l[i],-r[i]};
sort(p,p+n+1);
for(int i=0;i<=n;i++){
if(p[i].fi>l[0]) break;
ans=max(ans,p[i].fi+mi);
mi=min(mi,-p[i].se);
}
cout<<ans<<endl;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...