活动安排(贪心)

题目传送门sxazr
把每个活动按结束时间进行排序;
如果当前枚举的s[i]>=f[k],(k为记录的上一个活动)ans++;
用结构体sort排序好一点;
代码

#include <cstdio>
#include <algorithm>
using namespace std;
int n,ans;
struct st{
	int s,f;
}nod[1001];
bool cmp(st x,st y)
{
	return x.f<y.f;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d",&nod[i].s,&nod[i].f);
	sort(nod+1,nod+n+1,cmp);
	int k=1;ans++;
	for(int i=2;i<=n;i++){
		if(nod[i].s>=nod[k].f)
		  ans++,k=i;
	}
	printf("%d",ans);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42920137/article/details/88658191
今日推荐