关于这道题 map 做法的 clear
查看原帖
关于这道题 map 做法的 clear
515129
TLEWA楼主2023/8/19 19:35

如果使用 clear TLE,试试从外层数组 erase 试试

#include<bits/stdc++.h>
using namespace std;

int n;
int summ,siz[200005];
int k,b;
map<int,map<int,int> > m;
queue<int> que;

int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin >> n;

    int op;
    for(int i=1;i<=n;++i) {
        cin >> op >> k >> b;
        if(op==1) m[k][b]++,summ++,siz[k+100000]++;
        else if(op==2) {
            cout << summ-siz[k+100000] << '\n';
        }else {
            for(auto &amp;i:m) {
                if(i.first==k) {
                    summ-=(i.second[b]);
                    siz[k+100000]-=(i.second[b]);
                    i.second[b]=0;
                    continue;
                }
                summ-=siz[i.first+100000];
                siz[i.first+100000]=0;
                que.push(i.first);
//              i.second.clear();
            }
            while(!que.empty()) {
                m.erase(que.front());
                que.pop();
            }
        }
    }

    return 0;
}

2023/8/19 19:35
加载中...