时间限制:1000MS 内存限制:1000K 提交次数:0 通过次数:0
语言: not limited
描述
给定x轴上n个闭区间,去掉尽可能少的闭区间,使剩下的闭区间都不相交。
注意:这里,若区间与另一区间之间仅有端点是相同的,不算做区间相交。例如,[1,2]和[2,3]算是不相交区间。
输入格式
第一行一个正整数n,表示闭区间数。接下来n行中,每行2个整数,表示闭区间的2个整数端点。
输出格式
输出去掉的最少的闭区间数。
输入样例
3 10 20 10 15 12 15
输出样例
2
Hint
这个问题基本等同于书本P103的活动安排问题。
-------------------------------------------------------------------
8602 区间相交问题 (贪心)
������
#include<stdio.h>
#include"malloc.h"
void GreedySelector(int n,int s[],int f[],int A[])
{
int j=0,i;
A[0]=1;
for(i=1;i<n;i++)
{
if(s[i]>=f[j]) {A[i]=1;j=i;}
else A[i]=0;
}
}
int main()
{
int n,*s,*f,*A,i,j,temp,sum=0;
scanf("%d",&n);
s=(int*)malloc(n*sizeof(int));
f=(int*)malloc(n*sizeof(int));
A=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&s[i]);
scanf("%d",&f[i]);
A[i]=0;
}
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
if(f[i]<f[j])
{
temp=f[j];f[j]=f[i];f[i]=temp;
temp=s[j];s[j]=s[i];s[i]=temp;
}
}
GreedySelector(n,s,f,A);
for(i=0;i<n;i++)
{
sum+=A[i];
}
printf("%d\n",n-sum);
return 0;
}