活动安排|贪心
2026-04-05 09:05:38
发布于:河北
1阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<algorithm>
using namespace std;
// 定义活动结构体,包含开始时间和结束时间
struct activitys{
int begin=0; // 活动开始时间
int end=0; // 活动结束时间
}a[10001];
// 比较函数,按照活动结束时间升序排序
bool cmp(activitys a,activitys b){
return a.end<b.end;
}
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].begin>>a[i].end;
// 按照结束时间对活动进行排序
sort(a,a+n,cmp);
// 选择第一个活动(结束时间最早的)
last=a[0].end;
// 贪心算法:遍历剩余活动,如果当前活动开始时间大于等于上一个选中活动的结束时间,则选择该活动
for(int i=1;i<n;++i){
if(a[i].begin>=last){
cnt++; // 增加选中活动计数
last=a[i].end; // 更新上一个选中活动的结束时间为当前活动的结束时间
}
}
// 输出最多能选择的活动数量
cout<<cnt;
return 0;
}
这里空空如也








有帮助,赞一个