ABC343D 题解
题目传送门。
显然,如果每一次进行操作都重新枚举,一定超时。
但是每一次操作只会对一个数修改,所以我们只需要记录一个数的改变即可。
约定
- 若修改后
的个数为 ,则 是首次出现,答案加 。 - 若修改后
的个数为 ,则 没有了,答案减 。
由于 map
。
#include<iostream>
#include<map>
using namespace std;
map<long long,int>a;
int n,t,now[200005];
int x,y,ans=1;
int main(){
cin>>n>>t;
a[0]=n;
for(int i=1;i<=t;i++){
cin>>x>>y;
a[now[x]]--;
if(a[now[x]]==0)ans--;
now[x]+=y;
a[now[x]]++;
if(a[now[x]]==1)ans++;
cout<<ans<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】