1 2 3 4

【stl的神奇操作】用集合搞定区间相交

https://www.luogu.com.cn/problem/P2161

 

根据大佬说的来做了。

判断结构体a和b大小,看a是否完全在b的左边,一下代码中,相交的集合是在数学意义上相同的。

例如1--3 等于  2  -- 5

相交就相等

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<set>
using namespace std;
struct Node{
	int l,r;
}; 
bool operator < (const Node a,const Node b){
	return a.r < b.l;
}

set<Node>ins;
string op;
int main(){
	int n;
	scanf("%d",&n);
	while(n--){
		cin>>op;
		if(op == "A"){
			int l,r;
			scanf("%d %d",&l,&r);
			Node ans ;
			ans.l = l;
			ans.r = r;
			set<Node>::iterator it = ins.find(ans);
			int cnt=0;
			while(it != ins.end()){
				cnt++;
				ins.erase(it);
				it = ins.find(ans);
			}
			ins.insert(ans);
			printf("%d\n",cnt);
		}
		else{
			printf("%d\n",ins.size());
		}
		cout<<endl;
	} 
	return 0;
} 

 

posted @ 2020-02-22 18:57  Lesning  阅读(315)  评论(0编辑  收藏  举报