2 条题解
-
1
我就不用multiset!!!
multiset和set的区别就是set无法重复插入,所以难以计数,但我们可以直接开一个数组来记录一个数插入set的次数,注意到,所以普通数组存不下,开一个map即可解决问题
完美AC
#include<bits/stdc++.h> using namespace std; set<int>s;map<int,int>a; int main() { int q;scanf("%d",&q);a.clear(); while(q--) { int op,x,y;scanf("%d",&op); if(op==1) { scanf("%d",&x); s.insert(x);a[x]++; } if(op==2) { scanf("%d%d",&x,&y); if(a[x]<=y)s.erase(x),a[x]=0; else a[x]-=y; } if(op==3)printf("%d\n",*s.rbegin()-*s.begin()); } return 0; } -
0
#include <bits/stdc++.h> using namespace std; int main() { int q; cin >> q; multiset<int> s; while(q--) { int op, x, c; cin >> op; if(op == 1) { cin >> x; s.insert(x); } else if(op == 2) { cin >> x >> c; while(c-- && s.find(x) != s.end()) { s.erase(s.find(x)); } } if(op == 3) { cout << *s.rbegin() - *s.begin() << endl; } } return 0; }
- 1
信息
- ID
- 9931
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 6
- 标签
- 递交数
- 79
- 已通过
- 27
- 上传者