POJ 2376 Cleaning Shifts

Posted *Miracle*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 2376 Cleaning Shifts相关的知识,希望对你有一定的参考价值。

题意: 给定若干子区间,以及目标区间,用最少的子区间覆盖目标区间。若无法实现,输出-1;

思路:

因为每取一个,花费都是1,所以可以使用贪心。(否则要用DP)子区间按照左端点由小到大排序,记录已被覆盖区间,每次找到左端点在[1~r+1]中的右端点的最大值,用有这个最大值的子区间参与覆盖。ans++;

若中途断档,或者循环n之后没有覆盖完[1~r],则输出-1;

证明:

输出-1的做法易证。至于可以成立的情况,那么必然每个格子都要染色,从左边开始,若[1~r]已经被染色,因为已排序,所以之后的区间左端点递增,若左端点>r+1,则此时必须要用一个区间染色了。所以必然要尽可能往右里染色。

代码:POJ 2376 Cleaning Shifts

以上是关于POJ 2376 Cleaning Shifts的主要内容,如果未能解决你的问题,请参考以下文章

POJ2376 Cleaning Shifts

Cleaning Shifts(POJ 2376 贪心)

POJ 2376 Cleaning Shifts(贪心)

POJ 2376 Cleaning Shifts (贪心)

POJ 2376 Cleaning Shifts

POJ2376 Cleaning Shifts