set:
1.可以定义成数组形式:eg set<int> st[1008];
2.两个set类型的集合 有直接求并集和交集的操作函数:首先包含头文件 ‘’iterator‘’ set_union(第一个set集合的头迭代器,第一个set集合的尾迭代器,第二个set集合的头迭代器,第二个set集合的尾迭代器,inserter(st,st。begin))eg上代码:
#include<iostream> #include<cstdio> #include<vector> #include<set> #include <iterator> #include<algorithm> using namespace std; int N,M,k=0; vector< set<int> > vec; set<int> st; int main() { scanf("%d",&N); while(N--) { set<int> mx; scanf("%d",&M); int x; for(int i=0;i<M;i++) { scanf("%d",&x); mx.insert(x); } vec.push_back(mx); //printf("vec:%d ",vec[k++].size()); } int K,x,y; scanf("%d",&K); for(int i=0;i<K;i++) { scanf("%d%d",&x,&y); int len; len=vec[x-1].size()+vec[y-1].size(); set_union(vec[x-1].begin(),vec[x-1].end(),vec[y-1].begin(),vec[y-1].end(),inserter(st,st.begin())); printf("%.2lf%% ",1.0*(len-st.size())/st.size()*100); st.clear(); } return 0; }
3.查找已有set集合中有没有某个元素:s.count(y)查找s集合中有没有y,如果有返回1.没有返回0