宫水三叶擅长手工,比如用绳子围住一个带钉子的木板。
这是一个很大的木板,我们可以用一个平面直角坐标系来描述它。
木板上面有 n n n 个钉子,第 i i i 个钉子的坐标为 ( x i , y i ) (x_i,y_i) (xi,yi) 。
三叶可以用一些绳子连接一些点,这些绳子连接的点有一个限制。
首先,这些绳子连成的图形必须要是一个封闭的凸多边形。其次,绳子可能经过除端点外的其它点,但是没有两条绳子在同一条直线上。形象化的说,这是一个凸包,使用的绳子数就是边数。
对于一个图形,我们可以把所有钉子分成三类。
1、凸包的顶点。
2、在凸包内或在凸包边上,但是不是凸包顶点。
3、不在凸包内。
假设这三类点分别有 x , y , z x,y,z x,y,z 个,那么三叶认为这个图形的价值为 x ⋅ a x ⋅ b y ⋅ c z x \cdot a^x \cdot b^y \cdot c^z x⋅ax⋅by⋅cz ,其中 a , b , c a,b,c a,b,c 为给定的三个整数,它们之间有个特殊的关系 a + c = b a+c=b a+c=b 。
三叶想知道,对于所有不同的图形,它们各自的价值的总和是多少。
两个图形 A , B A,B A,B 不同,只需要满足其中某一条绳子在 A A A 中出现并且在 B B B 中没出现或者在 B B B 中出现并且在 A A A 中没出现。
1 ≤ n ≤ 2 × 1 0 3 , 0 ≤ x i , y i ≤ 1 0 9 , 1 ≤ a , b , c ≤ 1 0 9 1 \le n \le 2 \times 10^3,0 \le x_i,y_i \le 10^9,1 \le a,b,c \le 10^9 1≤n≤2×103,0≤xi,yi≤109,1≤a,b,c≤109
考虑到 b = a + c b=a+c b=a+c 有什么用,思考组合意义,把每个点设为 b b b 个状态,其中 a a a 个为 1 1 1 状态, c c c 个为 0 0 0 状态。那答案就为选择状态为 1 1 1 的点构成的凸包的边权和。
那就可以考虑枚举一条边,这条边有贡献的话就是一侧全为 0 0 0 ,一侧都可的情况,按照极角排序,维护队列即可。
效率: O ( n 2 l o g n ) O(n^2logn) O(n2logn) 。