区间相交问题
解题报告
最小删去区间数目=区间总数目-最大相容数目。
最大相容问题可以用贪心解决。具体的贪心策略是:将所有区间按照重点升序排列,贪心选择满足相容性且终点最小的区间。如此重复选择区间。
#include<iostream>
#define Max 40001
#include<algorithm>
using namespace std;
struct Interval{
int s,t;
}p[Max];
bool cmp(struct Interval a,struct Interval b){
return a.t<b.t;
}
int main(){
int n;
while(scanf("%d",&n)!=-1){
for(int i=0;i<n;i++){
int s,t;
scanf("%d%d",&s,&t);
if(s<t) p[i].s=s,p[i].t=t;
else p[i].s=t,p[i].t=s;
}
sort(p,p+n,cmp);
int cnt=1,lmt=p[0].t;
for(int i=1;i<n;i++)
if(p[i].s>lmt) cnt++,lmt=p[i].t;
cnt=n-cnt;
printf("%d/n",cnt);
}
return 0;
}