QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: jiangly

Posted at: 2026-02-19 13:08:18

Last updated: 2026-02-19 13:09:17

Back to Problem

题解

每一对凸包之间都存在一条直线分割它们,我们可以枚举三条直线,然后检验得到的方案。枚举直线的时候可以假设是凸包的公切线,即枚举 $(i,j)$,凸包 $A$ 是 $P_iP_j$ 左侧的点加上 $P_j$,凸包 $B$ 是 $P_iP_j$ 右侧的点加上 $P_i$。任意两条直线的限制相交就能得到想要的点集,然后检验三个点集是否都是凸包且每个点都出现一次。

检验凸包可以对于每对切线事先预处理,复杂度 $O(n^5)$。之后枚举三条切线之后就可以 $O(1)$ 判断,时间复杂度 $O(n^6)$。

由于需要枚举的量还是很多,需要进行一些剪枝,例如利用对称性,以及限制枚举的点必须在对应的凸包内以保证是切线。

Comments

No comments yet.