CF1789C题解
这是一道对2023年山东省队有重大意义的题目。
对每个颜色分别考虑,分开算贡献。 随便做做就行了。
打暴力省一,进特殊类别省队,拿压线银牌,度过相对成功的oi生涯!
upd:
大结局,1789以山东清华强基最低分进入了致理信计,再次延续卡线神话!
卡线又如何?多考一分都是浪费,这样的人生才可谓精彩吧!
代码如下:
#include<bits/stdc++.h>
#define pr pair<int,int>
#define mp make_pair
#define _(x,y) (x=(x+y)%mod)
#define ll long long
#define int long long
using namespace std;
ll read(){char c=getchar();ll d=0,k=1;
while(!(c>='0' and c<='9' or c=='-'))c=getchar();if(c=='-')k=-1,c=getchar();
while(c>='0' and c<='9')d=(d<<1)+(d<<3)+(c^48),c=getchar();return d*k;}
map<int,int>xiang_dui_cheng_gong_de_oi_sheng_ya;
int bao_li_sheng_yi[1000000],ya_xian_yin_pai[1000000],_1789_is_C,m,shan_dong_da_C_1789,_1789C;
vector<pr>te_shu_lei_bie_sheng_dui[1000000];
void insert(int x,int p){
if(ya_xian_yin_pai[x]!=1)return;
xiang_dui_cheng_gong_de_oi_sheng_ya[x]=p;
}
void del(int x,int p){
if(ya_xian_yin_pai[x])return;
te_shu_lei_bie_sheng_dui[x].push_back(mp(xiang_dui_cheng_gong_de_oi_sheng_ya[x],p-1));
xiang_dui_cheng_gong_de_oi_sheng_ya[x]=-1;
}
signed main(){
_1789C=read();
while(_1789C--){
shan_dong_da_C_1789=0;
_1789_is_C=read(),m=read();
for(int i=1;i<=_1789_is_C+m;i++){
te_shu_lei_bie_sheng_dui[i].clear();
ya_xian_yin_pai[i]=0;
xiang_dui_cheng_gong_de_oi_sheng_ya[i]=-1;
}
for(int i=1;i<=_1789_is_C;i++){
bao_li_sheng_yi[i]=read();
ya_xian_yin_pai[bao_li_sheng_yi[i]]++;
insert(bao_li_sheng_yi[i],0);
}
for(int i=1;i<=m;i++){
int x=read(),v=read();
ya_xian_yin_pai[bao_li_sheng_yi[x]]--;
del(bao_li_sheng_yi[x],i);
bao_li_sheng_yi[x]=v;
ya_xian_yin_pai[bao_li_sheng_yi[x]]++;
insert(bao_li_sheng_yi[x],i);
}
for(int i=1;i<=_1789_is_C+m;i++)
if(xiang_dui_cheng_gong_de_oi_sheng_ya[i]!=-1)
te_shu_lei_bie_sheng_dui[i].push_back(mp(xiang_dui_cheng_gong_de_oi_sheng_ya[i],m));
for(int i=1;i<=_1789_is_C+m;i++){
int u=-1,sum=0;
for(int j=0;j<te_shu_lei_bie_sheng_dui[i].size();j++){
int l=te_shu_lei_bie_sheng_dui[i][j].first,r=te_shu_lei_bie_sheng_dui[i][j].second;
shan_dong_da_C_1789+=(l-1-u)*sum;
shan_dong_da_C_1789+=(r-l+1)*(l+r)/2;
sum+=r-l+1;
u=r;
}
shan_dong_da_C_1789+=(m-u)*sum;
}
cout<<shan_dong_da_C_1789<<endl;
}
return 0;
}