可以把题目中的活动看成一个个的区间,那么多的区间可能有相交的,我们要找出不相交且最多的区间
想要区间数量最多化,可以贪心的从区间末开始计算,从区间最小的开始记
#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;
}
标签:node,struct,int,安排,区间,ans,LOJ10000,活动
From: https://www.cnblogs.com/yufan1102/p/17932306.html