#LOJ10000. 活动安排

image
image

可以把题目中的活动看成一个个的区间,那么多的区间可能有相交的,我们要找出不相交且最多的区间

想要区间数量最多化,可以贪心的从区间末开始计算,从区间最小的开始记

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
struct node{
	int l,r;
}a[N];
bool cmp(struct node x,struct node y){
	return x.r<y.r;
}
void solve(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].l>>a[i].r;
	}
	sort(a+1,a+1+n,cmp);
	int ans=1;
	int t=a[1].r;
	for(int i=2;i<=n;i++){
		if(a[i].l>=t){
			ans++;
			t=a[i].r;
		}
	}
	cout<<ans;
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	//cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 
posted @ 2023-12-28 11:11  yufan1102  阅读(3)  评论(0编辑  收藏  举报