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;
}

浙公网安备 33010602011771号