活动安排|贪心
2026-04-05 16:15:55
发布于:河北
1阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<algorithm>
using namespace std;
// 定义活动结构体,包含开始时间和结束时间
struct activitys{
int s; // 开始时间
int e; // 结束时间
}a[1001];
// 比较函数,按结束时间升序排序
bool cmp(activitys a,activitys b){
return a.e<b.e;
}
int main(){
// 提高输入输出效率的设置
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n=0,cnt=1,last=0; // n为活动数量,cnt为选中活动数,last为上一个选中活动的结束时间
cin>>n;
// 输入n个活动的开始和结束时间
for(int i=0;i<n;++i)
cin>>a[i].s>>a[i].e;
// 按结束时间排序
sort(a,a+n,cmp);
// 选择第一个活动
last=a[0].e;
// 贪心选择后续活动
for(int i=1;i<n;++i){
// 如果当前活动的开始时间大于等于上一个选中活动的结束时间
if(a[i].s>=last){
last=a[i].e; // 更新最后结束时间
cnt++; // 增加选中活动计数
}
}
cout<<cnt; // 输出最多能安排的活动数
return 0;
}
这里空空如也








有帮助,赞一个