2018徐州现场赛M(凸包+DP+单调队列)

题目链接

https://codeforces.com/gym/102012/problem/M

题意

给定 $n$ 个点的凸包,再给定 $m$ 个光源,要使用最少的光源照亮凸包的所有边,保证不存在三点共线

题解

逐步转化,可以知道一个光源能够覆盖的边是凸包上连续的一段,那么将光源覆盖的边的区间求出来,就变成区间覆盖问题了

这个就和多校某题一样了,不过变成了环,那么拆环为序列,枚举从哪个区间开始,再以区间为单位做 $DP$ ,去掉区间覆盖后,随着右端点的增加左端点也跟着增加,可以利用这个单调性把复杂度降到 $O(n^2)$

因为行末空格被卡了半天。。




代码