
计算几何
文章平均质量分 75
Masamiiiii
这个作者很懒,什么都没留下…
展开
-
POJ 1106 Transmitters 几何(叉积应用)
点击打开链接题意:给出圆心坐标p和半径,n个点的坐标,n若切割的那条线上没有点,则它落在两个点A,B之间,将这条线顺时针转向A,则此时半圆的覆盖的点不会减少,反而可能增大则切割的那条线上肯定有点.先淘汰掉半径外的点,枚举线上点a,则点b在半圆内当且仅当pa在pb的顺时针(逆时针)方向上,用叉积判断即可叉积判断方向,若坐标系是满足右手定则的,当右手的四指从a以不超过180度的转角原创 2017-03-22 20:57:15 · 332 阅读 · 0 评论 -
POJ 1654 Area 几何(叉积求多边形面积)
点击打开链接利用向量积=ab*ac*sin(ab,ac)=2*S三角形ABC按逆时针依次计算多边形相邻两个顶点和原点构成向量的叉积,及把多边形分成若干个三角形,累加即可#include #include #include #include #include using namespace std;typedef long long ll;const int N=2e6+原创 2017-03-23 11:05:49 · 497 阅读 · 0 评论 -
POJ 2653 Pick-up sticks 判断线段相交
点击打开链接题意:给出n条棍子端点,n棍子i在最上方,当且仅当没有棍子j(j>i)与棍子i相交跨立:某线段的两个端点分别处于另一个线段所在直线的两旁 判断线段p1p2,p3p4是否相交:p1p2跨立直线p3p4 && p3p4跨立直线p1p2p3,p4在直线p1p2两旁,则叉积:p1p2 *p1p3 和 p1p2 *p1p4 符号相反(一个顺时针或一个逆时针)原创 2017-03-23 21:59:44 · 469 阅读 · 0 评论 -
POJ 1269 Intersecting Lines 叉积(求直线交点)
点击打开链接#include #include #include #include #include using namespace std;const int N=2e5+20;const double eps=1e-10;int sign(double x){ if(x>eps) return 1; if(x<-eps) return -1; r原创 2017-03-25 17:56:15 · 504 阅读 · 0 评论 -
Codeforces 474C Captain Marmot 暴力+几何(绕定点旋转)
点击打开链接题意:T组数据T假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式: x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) + rx0 ; y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ;(不会证明。。原创 2017-03-26 15:48:33 · 877 阅读 · 0 评论 -
POJ 1113 Wall 凸包(模板题)
用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有的点。题意:给出n个点 n=L?若不考虑L 则答案为凸包的周长,考虑条件L,由如下图形 答案为:凸包周长+以L为半径的圆的周长 求凸包用的是 Graham's Scan法可以根据归纳法来证明,栈中保存的是前i-1个点集的凸包的极点因为按极角排序后,若(p[i],栈顶原创 2017-04-18 15:50:32 · 1349 阅读 · 0 评论 -
Codeforces 801D Volatile Kite 几何
点击打开链接题意:按顺时针给出n个点,n凸多边形:内角都问题转化一下:求最小D使得多边形non-convex,则改变一个内角,使得它>180 由下图(来自Codeforces题解)知道,答案为:min(点B->直线AC距离的1/2) ,改变的是内角,则ABC为连续的三点 计算点B到直线AC距离用到叉积 d=AB叉积AC/|AC| (四边形面积/底) #inclu原创 2017-04-18 19:13:10 · 592 阅读 · 0 评论 -
POJ 2187 Beauty Contest 最远点对(旋转卡壳)
点击打开链接旋转卡壳题意:平面上n个点,n直接枚举Tle,显然距离最大的两点 肯定为 n个点集所构成的凸包的顶点.(凸包的顶点 相对于n减少很多 但最坏情况还是O(n^2))旋转卡壳: 凸包上A距离C最远,则A距离边BC或者边CD肯定也是最远的,则枚举凸包上每一条边 找到距离该边最远的点注意到当我们逆时针枚举边的时候,最远点的变化也是逆时针的,这样就可以不用从头计算最远原创 2017-05-20 16:58:53 · 381 阅读 · 0 评论 -
Codeforces 793C Mice Problem 几何(模拟)
点击打开链接题意:n个点(x,y),速度(vx,vy),n某个点落在矩形内的时间t为:x1max(t1,t2)#include using namespace std;typedef long long ll;typedef pair ii;const int N=1e3+20;const int inf=2e8;const double eps=1e-11;in原创 2017-06-01 12:33:43 · 454 阅读 · 0 评论