关于STL中multiset的一个疑问(悬关)
  • 板块学术版
  • 楼主YFF1
  • 当前回复12
  • 已保存回复12
  • 发布时间2024/11/5 13:37
  • 上次更新2024/11/5 17:43:12
查看原帖
关于STL中multiset的一个疑问(悬关)
1046636
YFF1楼主2024/11/5 13:37

注意看,这个人在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到底是怎样一个删除方法啊?

2024/11/5 13:37
加载中...