本文共 560 字,大约阅读时间需要 1 分钟。
这是一道很经典的贪心问题。 我会在以后的博客中把有关贪心的博客整理到一起。 ***1.***首先我们按照每个活动的结束时间把他进行排序。
**2.如上图我们已经排好序了。我们为什么要这样排呢?(我也不太明白) 2.1序排好了,具体算法咋写呢? 2.1.1 我们首先可以确定的是第一个我们一定要选,因为这样我们就可以更早的安排下一个活动了。 假如我们觉得选择二号活动(开始的时间晚且h活动时间短)的话我们结束的我们就会发现我们无 法选择三号,显然可以证明这种思路 (选择二号的思路)是错误的。 2.1.2 当我们选完第一个后,我们先按照排好的顺序依次选取开始时间与上一个活动不冲突的活动。然后第三个第四个同样。 3.代码来袭
#include#include using namespace std;struct Act{ int A,B;}tim[1000005];bool cmp(Act a,Act b){ return a.B >N; for(int i=0; i >tim[i].A>>tim[i].B; } sort(tim,tim+N,cmp); int tail=tim[0].B; for(int i=1; i
转载地址:http://jmtg.baihongyu.com/