专栏文章
题解:AT_abc391_c [ABC391C] Pigeonhole Query
AT_abc391_c题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqcz1r3
- 此快照首次捕获于
- 2025/12/04 02:46 3 个月前
- 此快照最后确认于
- 2025/12/04 02:46 3 个月前
思路:
当为操作 时,
如果那只鸽子原来所在的巢有 只鸽子,则将答案减 。
然后把鸽子原来的巢的鸽子数减 并将鸽子改到新的巢。
如果新的巢有 只鸽子,那么把答案加 ,并把新的巢的鸽子数加 。
当为操作 时,
输出答案即可。
代码:
CPP#include<bits/stdc++.h>
//#define int long long
#define gcd(x,y) __gcd(x,y)
using namespace std;
int n,q,ans,a[1000005],b[1000005];
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;++i) a[i]=1,b[i]=i;
while(q--){
int op;
cin>>op;
if(op==1){
int x,y;
cin>>x>>y;
if(a[b[x]]==2) --ans;
--a[b[x]];
b[x]=y;
if(a[y]==1) ++ans;
++a[y];
}
else{
cout<<ans<<'\n';
/*
for(int i=1;i<=n;++i)
cerr<<a[i]<<' ';
cerr<<'\n';*/
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...