1422:【例题1】活动安排
题解
所有活动都有一个起始时间和结束时间,映射到数轴上,将每个活动的起始时间点和结束时间点之间的连线看成一条线段,那么求解问题的任务,就是在对应的数轴上选择尽可能多的不相交的线段。
由此,可以选择一种贪心策略:将每个活动的结束时间从小到大排序,每次选择最早的结束时间,这样接下来能选择更多的不相交的活动。
代码
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> using namespace std; int n,ans=1,t; struct app { int s,e; }a[1005]; bool cmp(app x,app y) { return x.e <y.e ; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&a[i].s ,&a[i].e ); sort(a+1,a+n+1,cmp); t=a[1].e ; for(int i=2;i<=n;i++) { if(a[i].s >=t) { ans++; t=a[i].e ; } } printf("%d",ans); return 0; }
原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10990596.html
时间: 2024-10-01 18:14:24