题解:AT_abc420_c [ABC420C] Sum of Min Query
违规用户名1010570 · · 题解
题意
给你一个长度为
您需要依次处理 A ,要么得到一个字符 B 。
如果你得到的字符是 A 那么输入
如果你得到的字符是 B 那么输入
分析
首先考虑暴力应该怎么做,显然我们只需每次按题目要求修改后,暴力枚举整个
一个明显的性质,不管你每次做什么操作最多只会使一个位置的
形式化的讲:
当更改
更改
时间复杂度
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,q,sum;
int a[200005];
int b[200005];
int minn[200005];
signed main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
minn[i]=min(a[i],b[i]);
sum+=minn[i];
}
while(q--){
char op;
cin>>op;
int pos,x;
cin>>pos>>x;
sum-=min(a[pos],b[pos]);
if(op=='A'){
a[pos]=x;
}
if(op=='B'){
b[pos]=x;
}
sum+=min(a[pos],b[pos]);
cout<<sum<<"\n";
}
return 0;
}