计算几何
文章平均质量分 74
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
五角星中的余弦定理
五角星中的余弦定理解法如下考虑正弦定理:cb=sin∠1sin∠2\dfrac{c}{b}=\dfrac{sin\angle1}{sin\angle 2}bc=sin∠2sin∠1同理可得:ed=sin∠2sin∠3\dfrac{e}{d}=\dfrac{sin\angle2}{sin\angle3}de=sin∠3sin∠2gf=sin∠3sin∠4\dfrac{g}{f}=\dfrac{sin\angle3}{sin\angle4}fg=sin∠4sin∠3ih=sin∠4原创 2021-10-20 17:16:06 · 497 阅读 · 0 评论 -
SGU-120 Archipelago(计算几何)
SGU-120 Archipelago(计算几何)题意给定正nnn边形的222个点(序号和坐标),按顺时针输出nnn个点。思路先找中心,然后用给的点旋转即可。要求中心OOO,注意到△AOn2∼△n1Bn2\triangle AOn_2\sim \triangle n_1Bn_2△AOn2∼△n1Bn2所以有:On2n1n2=An2Bn2=An2n1n2cosg\dfrac{On_2}{n_1n_2}=\dfrac{An_2}{Bn_2}=\dfrac{An_2}{n_1n_2\cos{原创 2021-03-19 11:17:25 · 247 阅读 · 0 评论 -
叉积判断点是否在三角形内(包括边上)
叉积判断点是否在三角形内(包括边上)模板代码如下:struct P{ int x,y;};int cross(P &a,P &b,P &c){ //返回ab,ac的叉积. return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y); //x1y2-x2y1 数据过大时要开long long }bool jg_left(P &a,P &b,P &c){ //判断点c 是否在直线ab左边. return原创 2020-08-30 13:40:27 · 963 阅读 · 0 评论 -
三角形的外心公式
三角形的外心公式已知三角形的三顶点:(x1,y1),(x2,y2),(x3,y3)(x_1,y_1),(x_2,y_2),(x_3,y_3)(x1,y1),(x2,y2),(x3,y3)求外心。思路:利用外心到顶点距离相等,可列出两个等式,联立消元即可。令:d1=(x22+y22)−(x12+y12),d2=(x32+y32)−(x22+y22)d_1=(x_2^2+y_2^2)-(x_1^2+y_1^2),d_2=(x_3^2+y_3^2)-(x_2^2+y_2^2)d1=(x22+原创 2020-08-18 12:22:26 · 7812 阅读 · 0 评论 -
Angle Beats(计算几何)
Angle Beats(计算几何)思路:mapmapmap排序+暴力枚举。分两种情况:1.Q[i]1.Q[i]1.Q[i]作为直角顶点.2.Q[i]2.Q[i]2.Q[i]不作为直角顶点。此题最重要的是利用mapmapmap将向量去重,如(2,1)=(4,2)(2,1)=(4,2)(2,1)=(4,2)时间复杂度:O(nq+log(n+q))O(nq+log(n+q))O(nq+log(n+q))#include<bits/stdc++.h>using namespace std;原创 2020-08-07 11:11:13 · 510 阅读 · 0 评论 -
P1663 山(二分&数学)
P1663 山(二分&数学)思路:二分+++数学.题意转化为:求在所有直线上方的点的最小yyy值。考虑二分yyy,判断xxx是否成立即可。令任意一条直线y=kx+by=kx+by=kx+b。1.若k>0→x≤y−bkk>0\rightarrow x\le\dfrac{y-b}{k}k>0→x≤ky−b2.若k<0→x≥y−bkk<0\rightarrow x\ge\dfrac{y-b}{k}k<0→x≥ky−b3.若k=0→y≥bk=0\righ原创 2020-08-04 16:20:48 · 380 阅读 · 0 评论 -
POJ2451.Uyuw‘s Concert(半平面交)
POJ2451.Uyuw’s Concert(半平面交)题意:求半平面交的核面积。思路:板子题,需要注意的是当半平面交是一个无限平面时,要预先用4个较大线段限制住。时间复杂度:O(nlogn)O(nlogn)O(nlogn)#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm&原创 2020-07-25 11:12:04 · 370 阅读 · 0 评论 -
POJ3335.Rotating Scoreboard(半平面交)
POJ3335.Rotating Scoreboard(半平面交)题意:判断半平面交是否存在,即判断能观察到所有点的点是否存在。下面上板子,具体看代码。时间复杂度:O(nlogn)O(nlogn)O(nlogn)#include<cstdio>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=205,M=2e4+5,inf=0x3f原创 2020-07-25 11:09:51 · 343 阅读 · 0 评论 -
Keyboard Free(计算几何)
Keyboard Free(计算几何)思路:假设AAA点不动,枚举BBB点,然后对CCC积分。可以把圆BBB分成100010001000个部分,枚举每个BBB点时ABCABCABC的高,然后求和再除以总数100010001000,以平均值表示高的期望。具体求CCC的积分可以分为三部分,沿圆心OOO作ABABAB的平行线CDCDCD,然后ABABAB也进行延长。分为3个部分:CDCDCD的外侧,ABABAB的外侧,CDCDCD和ABABAB的内测。分别对高积分。具体可看下面这个巨佬的博客写的。博原创 2020-07-16 20:44:09 · 513 阅读 · 0 评论 -
C2. Not So Simple Polygon Embedding(计算几何)
C2. Not So Simple Polygon Embedding传送门思路:先用一个较大的正方形装一下,然后试着旋转一下它的角度,可以观察最多旋转π2n\dfrac{\pi}{2n}2nπ度。如果再旋转π2n\dfrac{\pi}{2n}2nπ度就是之前的逆旋转,所以没必要,后面就是最开始的图形更没必要。然后可以观察到,因为距离最远存在一个最值,且距离最远的两点距离是先增大后减小的。可以猜想是凸函数,然后三分。或者直接猜结论是转到中间角度有最大答案。然而答案就是中间角度π4n\dfrac{原创 2020-05-20 10:02:54 · 839 阅读 · 0 评论 -
C1. Simple Polygon Embedding(计算几何)
C1. Simple Polygon Embedding(计算几何)传送门思路:因为正方形和正多边形都是中心对称图形,所以刚好满足时,两图形的中心肯定都是中心对称点,因为nnn为偶数,肯定是一半都要与另一半的情况是一样的,要最小肯定是相切最好,然后根据三角形的角度随便搞下就行了。具体图片见官方题解。。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;const doub原创 2020-05-20 09:55:24 · 442 阅读 · 0 评论 -
A.最短路(计算几何)
A.最短路(计算几何)题目传送门题意:给定A,B,坐标和,以C为圆心的坐标和半径r,求A到B的最短路径(不能经过圆C)。思路:分两种情况:第一种:不需要沿圆的切线走,直接两点之间距离最短,这种情况判断两个切角是否大于圆心角即可。第二种情况:利用勾股定理和圆弧公式即可。AC代码:#include<bits/stdc++.h>using namespace std;struc...原创 2020-04-23 09:02:52 · 419 阅读 · 0 评论