FOJ1230 区间相交问题(贪心)

来源:互联网 发布:关于音乐的软件 编辑:程序博客网 时间:2024/06/05 04:05


Link:http://acm.fzu.edu.cn/problem.php?pid=1230


Problem 1230 区间相交问题

Accept: 716    Submit: 2174
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

给定 x 轴上 n 个闭区间。去掉尽可能少的闭区间,使剩下的闭区间都不相交。

★算法设计: 对于给定的 n 个闭区间,计算去掉的最少闭区间数。

 Input

对于每组输入数据,输入数据的第一行是正整数 n (1<=n<=40,000),表示闭区间数。接下来的 n 行中,每行有 2 个整数,分别表示闭区间的 2 个端点。

 Output

输出计算出的去掉的最少闭区间数。

 Sample Input

310 2015 1020 15

 Sample Output

2

 Source

FJ CFCS 2008


AC code:

#include<iostream>#include<stdio.h>#include<algorithm>#include<math.h>#include<string.h>#include<map>#include<set>#include<vector>#define LL long long#define INF 0xfffffff#define PI acos(-1)#define EPS 1e-6using namespace std;struct node{int s;int e;}qu[40010];bool cmp(node a,node b){return a.e<b.e;}int main(){//freopen("in.txt","r",stdin);int i,n,s,e,ans,cur;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){scanf("%d%d",&s,&e);if(s>e)swap(s,e);qu[i].s=s;qu[i].e=e;}sort(qu,qu+n,cmp);ans=0;cur=qu[0].e;for(i=1;i<n;i++){if(qu[i].s<=cur){ans++;}else{cur=qu[i].e;}}printf("%d\n",ans);}return 0;}


原创粉丝点击