https://ajax.loj.ac/problem/10000
活动安排(
本题采用贪心的方法:若希望有更多活动可以举行,就要找最早结束的活动。而并不是最早开始的,那样的话反例很容易就可以举出:一个从头到尾超长的活动....
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
struct time
{
int s;
int e;//用结构体储存开始和结束时间。
}t[1001];
bool cmp(struct time a,struct time b)
{
return a.e<b.e;//比较结束时间
}
int main()
{
int n,i,cur=0,sum=0,c;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&t[i].s,&t[i].e);//读入
sort(t+1,t+n+1,cmp);
while(1)
{
for(i=1;i<=n;i++)
{
c=0;//标记的变量
if(t[i].s>=cur)
{
cur=t[i].e;//时间放到举行完活动时
c++;
sum++;
break;
}
}
if(c==0)
break;//不满足上面那个就说明没有更多时间了
}
printf("%d",sum);//输出
return 0;
}
这个奇怪的OJ是一本通提高的配套OJ.....