注意看,这个人在2024CSPS中使用了multiset,并且使用了erase函数,但是发现每次只会删掉其中一个数而不是所有相同元素,就是这样一份代码获得了100pts
#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到底是怎样一个删除方法啊?