SET的用法

mac2022-06-30  33

begin() 返回指向第一个元素的迭代器

 

clear() 清除所有元素

 

count() 返回某个值元素的个数

 

empty() 如果集合为空,返回true

 

end() 返回指向最后一个元素的迭代器

 

equal_range() 返回集合中与给定值相等的上下限的两个迭代器

 

erase() 删除集合中的元素

 

find() 返回一个指向被查找到元素的迭代器

 

get_allocator() 返回集合的分配器

 

insert() 在集合中插入元素

 

lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器

 

key_comp() 返回一个用于元素间值比较的函数

 

max_size() 返回集合能容纳的元素的最大限值

 

rbegin() 返回指向集合中最后一个元素的反向迭代器

 

rend() 返回指向集合中第一个元素的反向迭代器

 

size() 集合中元素的数目

 

swap() 交换两个集合变量

 

upper_bound() 返回大于某个值元素的迭代器

 

value_comp() 返回一个用于比较元素间的值的函数

BZOJ p2761 

#include <cstdio> #include <cstring> #include <set> const int maxn=50010; using namespace std; int n,m,t; int tmp; int ans[maxn+1]; int main() { scanf("%d",&t); while (t--) { set<int>S; int tt=0; scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%d",&tmp); if (S.count(tmp)<1) ans[++tt]=tmp,S.insert(tmp); } for (int i=1;i<=tt;i++) if (i!=tt) printf("%d ",ans[i]); else printf("%d\n",ans[i]); } } View Code

BZOJ p1208

#include<cstdio> #include<set> using namespace std; const int inf=~0U>>2; typedef set<int>::iterator sit; set<int> s; int main() {int n,a,b,ans=0,type; scanf("%d",&n); s.insert(inf); s.insert(-inf); while (n--) {scanf("%d%d",&a,&b); if (s.size()==2)type=a,s.insert(b); else if(type==a)s.insert(b); else {sit i=s.lower_bound(b); int r=*i-b,l=b-*(--i); if (l<=r) ans+=l,s.erase(i); else ans+=r,s.erase(++i); ans%=1000000;} } printf("%d\n",ans); } View Code

 

转载于:https://www.cnblogs.com/williamchenwl/p/3638544.html

最新回复(0)