Skip to content

ABC366C Balls and Bag Query

原题链接:C - 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