[NOI2010]航空管制

二元组的限制

考虑拓扑排序

正向拓扑不能保证最优,因卡的是结束时间

所以方向建图topo

从n为0时间,

相当于在n-k[i]的时间出现一架飞机

小根堆维护,每次选择当前最早出现的一架飞机起飞。

由于保证有解,这个显然是正确的,对于当前只有一架飞机,不飞白不飞(当然也不能不飞);多架飞机,先飞后飞反正都是要飞,所以随便飞一个

 

第二问受第一问启发,如果找到了当前飞机i,先不放进堆里面,如果当前没有了飞机可以飞,就让i飞。

实际上,我们是故意让i飞机来了不飞,等着同一时间别的飞机飞完(上面第一问的证明可以保证这样还是有解),自己再飞(这个时候必须要飞了)。

 

倒序topo考虑是一个关键点

因为卡的是截止时间,从前往后,并不知道先放谁更好,

而如果倒着,相当于某个时刻有了一个可以有的决策,往往比一个东西可能会过期处理起来方便

例如:[NOI2017]蔬菜——时光倒流+贪心

再如:

posted @ 2019-01-02 22:01  *Miracle*  阅读(236)  评论(0编辑  收藏  举报