[ABC202F]Integer Convex Hull

Posted Tan_tan_tann

tags:

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

Integer Convex Hull

题解

首先一看到这种求凸包面积为整数的,我们应该很容易想到dp 大概真的很容易想到吧

我们先考虑一下对于一个凸包我们怎么求它的面积,我们可以考虑把它拆分成三角形。
首先,对于一个凸包,它是有上下两条轮廓线的。
对于上轮廓线,我们就加上相邻的两个点与原点组成的三角形,对于下轮廓线,就将其减去。
这样,对于一个有 n n n个点的三角形,我们就可以 O ( n ) O\\left(n\\right) O(n)地将其求出。
由于它只要求面积是整数,并不要求面积的大小,三角形面积是加还是减并不重要,不妨就让下轮廓的三角形也是加,这并不会影响答案。
对于 S △ A B C S_{\\triangle} ABC SABC,我们可以通过正弦定理得到:
S △ A B C = 1 2 A B ⋅ A C ⋅ sin ⁡   A = 1 2 ∣ A B → ∣ ∣ A C → ∣ sin ⁡   A = 1 2 ∣ A B → × A C → ∣ S_{\\triangle} ABC=\\frac{1}{2}AB\\cdot AC\\cdot \\sin\\,A=\\frac{1}{2}\\left|\\overrightarrow{AB}\\right|\\left|\\overrightarrow{AC}\\right|\\sin\\,A=\\frac{1}{2}\\left|\\overrightarrow{AB}\\times \\overrightarrow{AC}\\right| SABC=21ABACsinA=21AB AC sinA=21AB ×AC
恰好是向量的叉乘,我们可以将那个 1 2 \\frac{1}{2} 21去掉,转化成判断奇偶性,也就是求出 ∣ O A → × O B → ∣ = X A Y B − X B Y A \\left|\\overrightarrow{OA}\\times \\overrightarrow{OB}\\right|=X_{A}Y_{B}-X_{B}Y_{A} OA ×OB =XAYBXBYA
我们只需要求出轮廓线上相邻的两个点的叉乘就可以了。

于是我们很容易就联想到通过轮廓线来做 d p dp dp,我们需要分上轮廓线与下轮廓线两条来进行。
u p i , j , 0 / 1 up_{i,j,0/1} upi,j,0/1表示上轮廓线上最后两个点的为 i , j i,j i,j,且此时已经得到面积的奇偶性为 0 / 1 0/1 0/1时的点的选择方案数, d n i , j , 0 / 1 dn_{i,j,0/1} dni,j,0/1就表示下轮廓线上同样的东西。
很容易发现,对于上轮廓线,我们要求其上所有的向量都是不断向下弯曲的,即下一条边可以由上一条边顺时针翻折得到,这同样可以通过叉乘的值与 0 0 0的大小关系得到。
也就是说当 ∣ P i P j → × P j P k → ∣ < 0 \\left|\\overrightarrow{P_{i}P_{j}}\\times \\overrightarrow{P_{j}P_{k}}\\right|< 0 PiPj ×PjPk <0,我们就可以用 u p i , j up_{i,j} upi,j去更新 u p j , k up_{j,k} upj,k
下轮廓线同理。

为了避免最后翻折到往回跑的情况,我们可以先将所有的点按 x x x排序。
对于两点垂直的情况,我们可以单独将其放到下轮廓线中进行处理,这也要求我们对所有点要将 y y y作为第二关键字进行排序。
由于我们求的是最后的方案数,我们势必就要对身处其中的点的数量进行统计,记 o v e r i , j over_{i,j} overi,j表示在线段 P i P j P_{i}P_{j} PiPj之上的点的个数。
那么下轮廓线的转移相当于
d n i , j = ∑ k = 1 j − 1 [ ∣ P i P j → × P j P k → ∣ ⩾ 0 ] 2 o v e r k , i d n k , i dn_{i,j}=\\sum_{k=1}^{j-1}\\left[\\left|\\overrightarrow{P_{i}P_{j}}\\times \\overrightarrow{P_{j}P_{k}}\\right|\\geqslant 0\\right]2^{over_{k,i}}dn_{k,i} dni,j=k=1j1[PiPj ×PjPk 0]2ovConvex hull凸包

hdu 6219 Empty Convex Polygons

2019雅礼集训 D7T3 convex [咕咕咕]

2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包

Convex Sets and Convex functions

Convex Sets and Convex functions