社区讨论
关于STL中multiset的一个疑问(悬关)
学术版参与者 4已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @m340sqxw
- 此快照首次捕获于
- 2024/11/05 13:39 去年
- 此快照最后确认于
- 2025/11/04 23:37 4 个月前
注意看,这个人在2024CSPS中使用了multiset,并且使用了erase函数,但是发现每次只会删掉其中一个数而不是所有相同元素,就是这样一份代码获得了100pts
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF=1e9;
multiset<int>s;
int n,a[200005],cnt=0;
bool use[200005];
signed main () {
cin>>n;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
s.insert(a[i]);
}
s.insert(INF);
for(int i=1;i<=n;i++){
auto pos=s.upper_bound(a[i]);
if(*pos!=INF){
cnt++;
use[i]=1;
s.erase(pos);
}
}
for(int i=1;i<=n;i++){
if(use[i]==0)cnt++;
}
cout<<cnt;
return 0;
}
所以multiset到底是怎样一个删除方法啊?
回复
共 12 条回复,欢迎继续交流。
正在加载回复...