点边相关
△ △ 格林公式(并不会)
题目
T1:Faster Than Light
显然肯定会落在格点上
对于角单独处理,也就是棍子两边都落在边上的情况。
此时棍子的姿态只与夹角有关,我们考虑棍子从平方移到竖放的过程
考虑每个格子,肯定会被经过两次(极限的边上只会经过一次)
第一次经过是棍子恰好碰到靠近角落的点,离开是恰好碰到远离
第二次经过相反
对于每个格子算出角度范围,排个序算贡献即可。
T2:Pun
每个点集找到重心与最远点
缩放到重心与最远点距离为1
然后按照极角序排序,记录角度与长度
有一个轮转相同则相似
每一个序列我们取出字典序最小的比较即可
可以用后缀数组
圆相关
题目
T1:清华集训2016 定向越野
暴力建图求最短路
T2:Kingdom Trip
已知j,往前扫,每个k对i的限制实际上是一个角度范围和一段弧
Polygons
基础知识
Minkowski sum:
对于两个凸包,我们确定左下角的点为基准。
把所有边拿出来,按照极角排序,扫一遍就行即可。
平面区域:
每个点对周围的点,把其他点按照极角序。
对于每条入边,我们把next的边连为顺时针第一个出边。按照这个跑即可
凸包/凸包直径
半平面交
点定位
从左往右扫描,判断过了几条边以及他们所夹的区域
凸包切线:
大型凸包切线
题目
T1:Enclosure
二分求凸包切线,把排掉的面积算一下即可。
T2:Circular Islands
每个红点和蓝点可以看做对线的限制,为一个区间。
先判断合法性再求解。
另一做法是求凸包,枚举判断。
T3:规避
也是找关键点求最短路
T4:NOI2017分身术
先求出所有的(k+1)个凸包(每次剥掉一层)
从外往内扫描相邻的两个凸包
存储外凸包上每个点对于内凸包的切线
每次删点考虑左右两个点的情况,讨论各种切线与直接连线的关系。理论O(1)
T5:Random convexhull
对于每条边算贡献,考虑合法的贡献与概率求和
T6:Bear and Isomorphic Points
显然每个i,j会形成一条直线产生限制。n^2条边超时
考虑优化,每个i肯定选择相对于1最近的两个点产生限制,其他限制都会被覆盖
考虑怎么找
①splay维护凸包序列
②线段树维护
③每次弹掉一段区间存到对应数组,需要时取回即可
Geometry
基础知识
三维向量变换
叉积等运算有关的公式
三维凸包
题目
T1:某区域赛F
做法①:神仙做法GG
做法②:解方程找到不动点,就可以推出最远的距离
T2:HDU5846
取出每个棱,求每条棱的交点,取出来求凸包
球面几何
基础知识
经纬度坐标系
原坐标:
经度
A=atan2(y,x)
A
=
a
t
a
n
2
(
y
,
x
)
纬度
B=asin2(z,x2+y2+z2−−−−−−−−−−√)
B
=
a
s
i
n
2
(
z
,
x
2
+
y
2
+
z
2
)
反推
x=RcosAcosB
x
=
R
c
o
s
A
c
o
s
B
y=RsinAcosB
y
=
R
s
i
n
A
c
o
s
B
z=sinB
z
=
s
i
n
B
题目
T1:投影
考虑凸包上一个面的贡献
就上面来的光能产生投影,用积分算贡献(不会)
反演
反演含义
每个点保持他到反演中心的方向不变,距离变为d/r
反演性质
不过反演中心的直线反演过后是过反演中心的园
过反演中心的园反演过后是不过反演中心的直线
过反演中心的直线不变
过反演中心的园反演之后还过反演之后的园
题目
T1:
反演,求三点共线数目
T2:
反演之后可得到两条平行直线夹着一堆园
反演求直径
T3:
用共轭做exm????
分式变换可复合
反射为旋转平移的组合
反演=
1∑共轭
1
∑
共
轭
旋转为乘上一个复数
平移为加上一个复数