计算几何
文章平均质量分 78
极限情况,平面扫描,凸包,数值积分
SHOHOKUKU
这个作者很懒,什么都没留下…
展开
-
AtCoder ABC 365G 凸包 + 二分
则这两种操作对应点的连线都可以被取到。拓展到两个点以上的情况,则可以任取这些点构成的凸包内的任一点。的节点,二分满足约束条件的节点,最后再二分该节点与凸包上次一节点的线性组合。,若此节点不满足约束条件,则任一节点都不满足条件。对于最小化时间,则转化为最大化。,那么将其看作二维平面的点,即。,则他们的任意组合可以表示为。满足约束条件,则单位为。其余情况,我们考虑凸包。原创 2024-06-19 14:41:08 · 965 阅读 · 0 评论 -
Codeforces 1860F 计算几何 / 数学
将这些位置逆时针排序,依次处理,每次次序发生交换的点一定是位于数个连续区间,那么把这些可能交换的点单独进行排序,每个点对均摊处理。时,数个点的点积相同,此时左括号置于前面(根据括号的性质,所有前缀和非负,则满足条件)。具体实现上,对于相邻位置。,观察到仅当两个平面的交线的两侧,次序交换。点对,可以得到所有可能出现点次序交换的位置。情况下的次序,不断维护相邻点发生交换的。与上述计算几何方法原理相同,将。两侧,点对的次序固定;,直观上即二维平面的直线随着。原创 2024-02-03 20:14:52 · 939 阅读 · 0 评论 -
LeeCode AutoX-4 计算几何
判断线段与圆的相交性,若圆心到线段所在直线的最小距离大于半径,则不可能相交;反之,若线段存在位于圆上的端点,则相交;若线段存在位于圆内部的端点,则除了两个端点都位于圆内的情况,其他情况都相交;其余情况,圆心与线段两端点的连线都位于圆心与线段的垂线两侧,此时可以通过内积简单地进行判断。判断两线段相交,一类思路是计算出交点,在判断交点是否处于两条线段上;由于只用判断相交性,不用求交点,可以使用基于ccw函数的做法简单求解,具体而言,用端点表示的两条非平行的线段。分别为两圆半径,则充要条件为。原创 2023-11-19 16:09:01 · 208 阅读 · 0 评论 -
Codeforces 559D Pick 定理 + 数学期望
题解传送门 Codeforces 559D Randomizer题解已知 nnn 个点构成的严格凸多边形,求其中可构成非退化的凸多边形点集,所构成的多边形内部格点(整数坐标点)数量的数学期望。满足条件的点集规模至少为 333。这样的点集构成的凸多边形可以看作是原始凸多边形切割数个凸多边形后得到。那么可以枚举 O(n2)O(n^2)O(n2) 的被切割的凸多边形,计算不被包含在多边形内部格点数量的数学期望。假设任意所有原始凸多边形内部的格点都被点的子集构成的凸多边形包含,最后减去上述数学期望,即为所求原创 2022-02-26 22:00:30 · 247 阅读 · 0 评论 -
POJ 1265 Pick 定理
题意传送门 POJ 1265 Area题解Pick 定理:对于顶点均为格点(坐标均为整数)的简单多边形,其面积 AAA、内部格点数 III 与边界格点数 EEE 关系为:A=I+E/2−1A=I+E/2-1A=I+E/2−1已知多边形边界相邻两点之差 (dx,dy)(dx,dy)(dx,dy),则两点之间两边上的格点数为 gcd(dx,+dy)+1gcd(dx,+dy)+1gcd(dx,+dy)+1,由于依次计算相邻的边,连接两边的端点会统计两次,故每条边贡献为 gcd(dx,+dy)gcd(d原创 2022-02-24 11:06:36 · 214 阅读 · 0 评论 -
P6732「Wdsr-2」直线方程
题意传送门 P6732「Wdsr-2」方分题解平面直角坐标系上有两个相离的正方形 AAA 和 BBB,求任意一条将它们分隔到两侧的直线。若某个点在直线 ax+by=cax+by=cax+by=c 上方,则有 ax+by−c>0ax+by-c>0ax+by−c>0。若已知直线方程,则容易验证直线是否将两个正方形分隔在其两侧,即分别位于直线上方与下方。为方便观察,将正方形 AAA 右上角的顶点置于坐标轴原点,则正方形间的相对位置可以通过坐标变换使 BBB 靠近点。此时有三种情况:BB原创 2021-08-22 18:59:27 · 97 阅读 · 0 评论 -
NC 16697 计算几何 + dijkstra
题意传送门 NC 16697题解已知矩形任意 333 个顶点,求第 444 个顶点。首先根据点积求出由已知顶点组成的三角形的直角所在的点 (x,y)(x,y)(x,y)(x−x1)×(x−x2)+(y−y1)×(y−y2)=0(x-x1)\times (x-x2)+(y-y1)\times (y-y2)=0(x−x1)×(x−x2)+(y−y1)×(y−y2)=0根据对角线中点,有(x1+x22,y1+y22)=(x+x42,y+y42)(\frac{x1+x2}{2},\frac{y1+y2}原创 2020-06-25 23:46:01 · 123 阅读 · 0 评论 -
POJ 1912 凸包
题意传送门 POJ 1912题解直线在全部点的一侧,考虑凸包即可,凸包算法需要至少 222 个点,需要特别处理点数小于 222 的情况。最简单地,通过枚举点判断是否在直线同一侧,复杂度 O(nm)O(nm)O(nm),需要优化;考虑与当前处理直线斜率相同的直线,与凸包的 222 个切点即可;二分大于直线斜率正负值对应弧度的凸包的边,其端点即为切点。#include <cstdio&g...原创 2020-05-06 12:55:15 · 318 阅读 · 0 评论 -
POJ 1113 凸包
题意传送门 POJ 1113题解求城堡的凸包,再加上半径为最小距离的圆的周长(保证顶点与围栏的最小距离)即可。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <queue>#include <vec...原创 2020-05-03 23:27:33 · 166 阅读 · 0 评论