| 比赛 |
2026.8.28 |
评测结果 |
AAAAWTTTTT |
| 题目名称 |
无法拒绝孤独的她 |
最终得分 |
40 |
| 用户昵称 |
Ruyi |
运行时间 |
12.300 s |
| 代码语言 |
C++ |
内存使用 |
10.48 MiB |
| 提交时间 |
2026-08-28 10:45:29 |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 500001
using namespace std;
ll n,q,a[N],b[N],c[N],p,x,y,z,sum,ans[N],now,sans;
bool flag1=true,flag2=true,flag3=true;
ll read(){
ll x=0,f=1;
char c=' ';
while(c>'9'||c<'0'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+(c-'0');
c=getchar();
}
return x*f;
}
void write(ll x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+'0');
return ;
}
int main(){
freopen("cantrefuse.in","r",stdin);
freopen("cantrefuse.out","w",stdout);
n=read();
q=read();
for(int i=1;i<=n;i++){
a[i]=read();
if(a[i]!=0) flag1=false;
}
for(int i=1;i<=n;i++){
b[i]=read();
if(b[i]!=0) flag2=false;
ans[i]=max(a[i],b[i]);
sum+=ans[i];
}
for(int i=1;i<n;i++){
c[i]=read();
if(c[i]!=0) flag3=false;
}
while(q--){
p=read();
x=read();
y=read();
z=read();
if(flag1&&x==0){
b[p]=y;
if(p!=n) c[p]=z;
cout<<0<<endl;
}else if(flag2&&y==0){
a[p]=x;
if(p!=n) c[p]=z;
cout<<0<<endl;
}else if(flag3&&(p==n||z==0)){
a[p]=x;
b[p]=y;
sum-=ans[p];
ans[p]=max(x,y);
sum+=ans[p];
cout<<sum<<endl;
}else{
a[p]=x;
b[p]=y;
c[p]=z;
for(int i=1;i<=n;i++){
sans+=min(a[i]+now,b[i]);
if(a[i]+now>b[i]) now=min(a[i]+now-b[i],c[i]);
else now=0;
}
cout<<sans<<endl;
sans=now=0;
}
}
return 0;
}