AtCoder [ABC343D] Diversity of Scores 题解

分析

题目要求我们维护不同分数的个数,还需要进行修改,自然想到可以用 \(\operatorname{map}\) 来存储每个分数在当前时间点出现的次数。

注意需要初始化 \(0\) 的个数为 \(N\),即初始时所有玩家的得分为 \(0\)。只用输出 \(\operatorname{map}\) 的大小即为所求值。

Code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+5;
int n,t,a,b;
ll s[N];
map<ll,int> mp;
int main(){
	scanf("%d%d",&n,&t);
	mp[0]=n;//初始化
	for(int i=1;i<=t;i++){
		scanf("%d%d",&a,&b);
		mp[s[a]]--;//将加分前分数的个数减1
		if(!mp[s[a]])mp.erase(s[a]);
		s[a]+=b;
		mp[s[a]]++;
		printf("%lld\n",mp.size());
	}
	return 0;
}
posted @ 2025-08-19 17:28  cqbzcjh  阅读(6)  评论(0)    收藏  举报