【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;
}
寻找真正的热爱

浙公网安备 33010602011771号