ABC366C Balls and Bag Query
Tag:模拟
题目描述
你有一个空袋子。将会有 \(Q\) 次询问或操作,且必须按顺序处理,每次询问(操作)都会先输入一个\(1-3\)的数字 \(P\) 表示询问类型。
询问有三种类型:
若 \(P\)\(=\)\(1\) ,则再输入一个数字 \(X\) , 表示向袋子中放入一个编号为 \(X\) 的小球
若 \(P\)\(=\)\(2\) ,则再输入一个数字 \(X\) , 表示从袋子中拿出一个编号为 \(X\) 的小球,且保证此时袋子中编号为 \(X\) 的小球数目大于 \(0\)
若 \(P\)\(=\)\(3\),要求输出此时袋中小球的种类数(同种编号的小球为相同种类)
数据说明:
\(1 \leq Q \leq 2 * 10^5,1 \leq x \leq 10^6\)
分析
直接写个 \(\text{map}\) 按题意模拟。
代码实现
void NeverSayNever() {
int q; cin >> q;
map<int,int> mp;
while(q--){
int op; cin >> op;
if(op == 3){
cout << mp.size() << endl;
}
if(op == 1){
int x; cin >> x;
mp[x]++;
}
if(op == 2){
int x; cin >> x;
mp[x]--;
if(mp[x] == 0) mp.erase(x);
}
}
}
日志
本页面创建于 2024/8/17 20:25