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

不会

posted @ 2026-01-25 03:56  Rainbow_qwq  阅读(59)  评论(1)    收藏  举报