社区讨论

63TLE求调(玄关)

P3369【模板】普通平衡树参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m03akq2m
此快照首次捕获于
2024/08/21 11:26
2 年前
此快照最后确认于
2025/11/04 22:53
4 个月前
查看原帖
删除一个数的操作可以怎么优化,巨佬们。
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;

map <int , int> mp;
multiset<int>s;
int n,t,x,now;

signed main() {
    s.insert(-2147483647);
    s.insert(2147483647);
    scanf("%lld",&n);
    while(n--) {
        scanf("%lld%lld", &t, &x);
        if(t == 1) {
        	s.insert(x);
        	mp[x]++;
		}
        if(t == 2) {
        	mp[x]--;
        	s.erase(x);
        	for(int i = 1; i <= mp[x]; i++) s.insert(x);
		}
		if(t == 3) {
            auto it = s.lower_bound(x);
            now = 0;
            for(auto i = s.begin(); i != it; i++, now++);
            printf("%lld\n",now);
        }
        if(t == 4) {
            now = -1;
            for(int i : s) if(++now == x) printf("%lld\n",i);
        }
        if(t == 5) {
            auto it = s.lower_bound(x);
            printf("%lld\n", *--it);
        }
        if(t == 6) printf("%lld\n",*s.upper_bound(x));
    }
}

回复

2 条回复,欢迎继续交流。

正在加载回复...