您的位置:首页 > 其它

nyoj891找点

2016-02-12 00:02 351 查看
#include<stdio.h>

#include<algorithm>

using namespace std;

struct ch{

int s,e;

}a[101];

bool cmp(struct ch a,struct ch b)

{

if(a.e != b.e) return a.e > b.e;

else return a.s > b.s;

}

int main()

{

int n,i;

while(scanf("%d",&n) != EOF)

{

for(i = 0;i < n;i++)

{

scanf("%d %d",&a[i].s,&a[i].e);

}

sort(a,a+n,cmp);

int l = 0,r = 101,point = 1;

for(i = 0;i < n;i++)

{

if(r >= a[i].e && l <= a[i].e)

{

r = a[i].e;

if(l < a[i].s) l = a[i].s;

}

else

{

point++;

r = a[i].e;

l = a[i].s;

}

}

printf("%d\n",point);

}

return 0;

}

思路:将输入的n个数组先有区间从大到小排序然后有区间若是相等就左区间从大到小排序。然后,每次区间比较的时候去交集然后在进行比较。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: