Geometry / Numerical Methods tasks: Solution Set
qwq
ICPC Shanghai 2020 A. Wowoear
通过调整法发现,最终选的线一定会经过原来折线的某个点(可能是卡在中间,可能是端点),否则可以调整到更优。
枚举这个点,把它向其他点的连线极角排序。这样会把角度分成若干个区间。其中每个角度区间往两边做射线,碰到的直线是相同的。
对于卡在中间的情况:我们要在每个角度区间里计算最优答案,发现答案是凸的,可以三分角度然后计算。这里要判断向某个方向射线是空的(不碰到折线)情况。
作为端点的情况是类似的,只需对每个角度区间计算。进一步分析会发现这种情况另一端也可以调整到接触某个端点,所以可以不用三分。
时间复杂度 \(O(n^2 \log V)\)。
ICPC Jinan 2022 F. Grid Points
L. Colorful Quadrilateral
计算四边形面积的方法,AC cross BD。
考虑所有颜色都不同怎么做。
定一个方向 \(v\),求投影最大的、和 \(v\) 平行的 AC、和 \(v\) 平行的 BD。扫描这个角度即可。
要求有 4 种颜色,可以给颜色随机赋值成新的颜色,rand 500 次。这种做法会比较卡常。
2nd Ucup Final G. Circular Parterre
官方题解写的很明白,故转载。
半径不小于最大圆的半径,考虑大于最大圆的半径的情况,那么圆并的圆弧边界实际上不构成限制,只有顶点构成限制。
求出所有圆并顶点的 V 图,V 图的顶点是可能的候选圆心,取出这些候选圆心可以得到对应的候选圆。
要判断一个候选圆是否合法,只需要判断圆心是否在圆并的圆弧拉直后的区域里,必要性是显然的,充分性可以通过分析不可能出现误判合法的情况进行证明,此处略去细节。
BalticOI 2023 D1T1. Astronomer
二分答案,并假设有一个点在圆周上,否则可以调整到更优。
枚举这个点,想象这个圆绕着这个点转一周的过程(也就是,扫描圆心对这个点的角度)。意在转的过程中,半径会实时发生变化。
对于每个其他的点,存在一个角度区间使得其在圆中。可以二分求出这个区间。
求出区间后,对角度扫描线即可。
直接做的时间复杂度是 \(O(n^2\log n\log \frac{1}{\epsilon})\),可以通过随机打乱 + 只对改变答案的点二分的 trick 优化到 \(O(n^2\log n + n\log^2 n \log \frac{1}{\epsilon})\)。
ICPC World Finals 2021 D. Guardians of the Galler
EC-Final 2019 I. Moon
先判掉所有点共线、共面的情况,答案为 1。
求出所有点和原点的三维凸包。
对于三维凸包上的一个面,如果里面不包含原点,那就会 ban 掉它对面的一个球面多边形。算出所有的面积 \(S\),那么 \(ans = 1 - \frac{S}{4\pi}\)(\(4\pi\) 为球表面积)。
卡精度。要全整。
Geometry PTSD
上一题的 generator。
CCPC Final 2018 F. Cones
求出所有点的 Voronoi Diagram,平面上每个点归进离它最近的那个 cone。
问题转化为求一个圆和凸多边形的交,在 cone 上垂直的体积。
将交差分为若干个扇形和三角形,分别积分。
用极坐标-半径的积分,扇形是容易的,三角形的话,先差分成直角三角形,然后要算 \(\int_{x=0}^{\theta} \sec^3 x dx\)。
EC Final 2020. Circle
题意:凸包上每个点画一个半径为 \(r\) 的圆,求圆的交的面积。
首先判掉最远点对 \(>r\) 的情况。
然后考虑对圆做一个类似半平面交的操作,具体的,在栈里维护当前“有效”的若干个圆,按凸包顺序加入新的圆,如果能使栈顶(对最终面积的限制)变的无效就 pop 栈顶。
【此处需要画图】
最终面积的形状就是栈中每个圆的一段圆弧拼起来。不难算面积。时间复杂度线性。
QOJ 1818; NAC 2021. Apple Orchard
求出所有圆的 power diagram。
对于每个圆,其贡献的面积就是 power diagram + 输入的矩形 + 圆的交。
QOJ 4618. Driverless Car II
将可贡献的每个点归到距离它最近的两个点里。
求出所有点的 V 图,对于 V 图上的每条边,都对应两个点,这两个点会对应一个贡献。
再枚举第三个点,那么就会产生若干个半平面的限制。那就要求一个椭圆和一堆半平面的交,拉伸一下坐标轴就可以求。
V 图的总边数是 \(O(n)\) 的,所以复杂度是 \(O(n^2\log n)\)。
CCPC Jinan 2024 G. The Wheel of Fortune
问题的关键在于求出:一个凸包内有一个点,这个点向外发射了若干条射线,最终切割出来的每块的面积。
有一个精巧的 \(O(n\log n)\) 实现,只需要 convex cut:分治,取 mid 这条直线,两边都是做一次 convex cut 后递归下去。递归每层的多边形边数总和是 \(O(n)\) 的。
ICPC Hangzhou 2024 C. Catch the Star
两凸包切线。
ICPC Shenyang 2021 A. A Bite of Teyvat
一种不用 Power diagram 的理解方式:
维护哪些圆还没有被完全覆盖住。外面没被覆盖住的圆弧可以算面积。
依次加入每个圆时,向左找到第一个没被覆盖住的圆 battle 一下。
如果左边的圆被删除,就继续;如果新加的圆被删除就 over 了;否则,更左边的圆不可能被继续删除。
右边同理。时间复杂度 \(O(n\log n)\)。
ICPC Shanghai 2024 A. Ancient Maps, Hidden Danger
一个点如果能被照亮,就要存在一条 A->P 射线不被挡住
对于每个点 P,有一个 ban 掉的区域,最后阴影是这些区域取交集
简单多边形取交集有点变态,大概要把所有线交出来的区域都抠出来算。
Petrozavodsk Summer 2023 Day 6. Keychain
V 图和 Farthest V 图。
我怎么获得了最劣解
Petrozavodsk Winter 2020. Day 6. A. Outlier
可以二分出每个内部点所处的三角形 \((p_0,p_i,p_{i+1})\)。
对于删去凸包上一个顶点,凸包上会新出现一些点(位于消失的三角形中)。而每个内部点最多出现在两个消失的三角形中,总共暴力加入的就是 \(O(n)\) 的。
CTS2019 田野
https://uoj.ac/submission/716713
ZJOI2018 保镖
给定点集,求这些点以在给定矩形内等概率随机位置的点为中心,进行半径为 1 的反演后,形成的凸包的期望顶点个数。
将凸包顶点个数转化成三角剖分的三角形个数。
钦定统计的三角剖分为 Delaunay 三角剖分。
定义内圆为三个点的外接圆,内部没有其他点。
定义外圆为三个点的外接圆,外部没有其他点。
如何求内圆和外圆?只需要 V 图和 Farthest V 图即可。
EC Final 2023 H. Map 2
不会
LaLa and Magic Circle (LaLa Version)
不会
Master of Polygon
不会
Yokohama 2019-2020 Fun Region
不会

浙公网安备 33010602011771号