1 条题解
-
0
自动搬运
来自洛谷,原作者为

5ab_juruo
May you find some comfort here搬运于
2025-08-24 22:50:44,当前版本为作者最后更新于2023-09-29 15:25:18,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
观察到只有凸包上的点有可能。把凸包求出来,然后拎出上面的颜色,每次询问 check 即可。
证明:一个单色半平面的存在性等价于只包含一个这种颜色的点的半平面。考虑朝半平面的方向移动直线,逼近不包含任何点的状态,此时即为凸包的切线,最后一个点也必然在凸包上。
我们扩展 的方法,考虑切了一种颜色的点后下一种颜色的备选。
对于原凸包上的同色连续段 ,将 中的点删掉,并对 上一个点,, 下一个点构成的多边形内部的非同色点求凸壳(包括两端的点)。将凸壳上的点和 对应颜色构成的点对计入答案。
考虑如何求解 对应的点集。将所有点按照 极角排序,设凸包上所有的点按照逆时针依次为 。
将多边形剖分成若干个形如 的三角形。显然每个凸包内部的点只在一个三角形中。
注意到,若点 属于 这个三角形,则 只有可能对 , 或 所在的连续段产生贡献。结论易证。
所以每个点最多对三段有贡献,总点数就不超过 ,总答案对数也不超过 ,点集内直接暴力求解凸包即可。
复杂度 。
大致还是延续 的思路,但是要进行一定的分类讨论:
- 有两种颜色在外凸包上,一种颜色在内部(包括了三种颜色都在外凸包上的情况);
- 一种颜色在外凸包上,一种颜色在内凸包上,还有一种要再往里面走一层(包括了两种颜色都在内凸包上的情况)。
主要的问题是,在 时,对于每个内部凸包上的点总存在一个半平面能截到外部凸包上的点,但这个结论在 的第一个 case 并不成立。所以还需要额外做个双指针状物,来检查能否覆盖到。
复杂度和 一致,带个不知道多少的常数。
- 1
信息
- ID
- 8877
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者