AT_abc366_c [ABC366C] Balls and Bag Query 题解
Snowflake_Fairy · · 题解
解题思路
此题有
其实我们不需要进行实质的操作,我们只需要表示出这个操作即可。然后我们就很容易地想到桶。
我们设桶数组为
对于插入一个数
对于删除一个数
对于询问我们保存的数中不同的数的个数,打印
这里由于作者习惯使用 map 容器进行桶操作,所以代码给出的是 map 容器版,如果使用普通数组也是同样的方法。
CODE:
#include <bits/stdc++.h>
using namespace std;
#define int long long
map<int, int> m;
int ans = 0;
signed main() {
ios::sync_with_stdio(false);
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int q;
cin >> q;
while (q--) {
int flag;
cin >> flag;
if (flag == 1) {
int x;
cin >> x;
m[x]++;
if (m[x] == 1)
ans++;
} else if (flag == 2) {
int x;
cin >> x;
m[x]--;
if (m[x] == 0)
ans--;
} else {
cout << ans << "\n";
}
}
return 0;
}