计算几何
文章平均质量分 81
huyuncong
这个作者很懒,什么都没留下…
展开
-
扫描线法(水平序)求凸包
Graham扫描算法原创 2011-05-22 14:45:00 · 1806 阅读 · 0 评论 -
最小圆覆盖
强悍的随机化线性算法。这类算法首先考虑暴力应该如何达到暴力最优复杂度(一般来说是有部分操作最快可以o(1)进行),然后用一定递归思想分割问题,并考虑在随机情况下最坏情况出现概率,从而找出最坏情况出现并不影响整体。(注意先随机)对于最小圆覆盖来说,假设ci为前i个点的解,若i不在ci-1中,则i一定在ci的圆周上,递归至前i-1,已确定i在圆周上求解,同样可确定第二个点,再递归至第三层则原创 2012-02-15 18:49:49 · 1457 阅读 · 0 评论 -
CodeChef CIELQUIZ
题意:某人要组织一场比赛。她有N道备选题,这场比赛有K题。每位选手要做这K题。她想,如果选手把这K题全做出来,选手会觉得这个比赛过于简单,很无趣。但如果选手只做出了很少的题目,又会觉得很难过。因此她想选这K道题,使得解出恰好K − 1题的概率尽量大。假设她已经进行了实验,得出了每道题被解出的概率。一共有不超过20组测试数据,对每组测试数据,1 ≤ K ≤ N ≤ 36。卓亮的ppt还是不错原创 2012-02-17 12:32:28 · 777 阅读 · 0 评论 -
[Balkan 2011]Timeismoney
bzoj2395每条边有两个权值,c[i],t[i],求一棵生成树使sigma(c[i])*sigma(t[i])最小ž设Sigma(a)*sigma(b)=kž则sigma(b)=k/sigma(a),是个反比例函数,求出y坐标最小的和x坐标最小的,则将两个点连线,之上的点肯定不优,接着用此线去切(以此斜率类似最优比率生成树去判定,此处最好不用实数,很慢很慢),切点是最优解的原创 2012-02-18 09:33:01 · 1016 阅读 · 0 评论 -
pick公式
S=a+ b/2 - 1 (其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积)其实这个公式主要是用来求a的,s可由叉积得出,b可由gcd求出。pick公式无比牛逼证明(感谢ldl提供出处)Pick定理是说,假设平面上有一个顶点全在格点上的多边形P,那么其面积S(P)应该等于i+b/2-1,其中i为多边形内部所含的格点数,b是多边形边界上的格点数原创 2011-12-29 12:38:02 · 1756 阅读 · 2 评论 -
【usaco】MAR10
以前排极角判象限太傻了。。。#include #include #include #include #include using namespace std;#define sqr(x) (x)*(x)const double eps=1e-15,pi=3.14159265357;struct point{double x,y,z,d,_;}p[2000];int n,m,f原创 2013-01-15 08:37:10 · 605 阅读 · 0 评论 -
【对偶定理】hdu4128
之前用对偶定理解决了个网络流,这次又碰到了个半平面交...可惜漏了个约束条件,对偶后的变量少了一个首先把至少要跑的d先跑完,得到新的L和W设每个人跑的长度是xi,同时令xn=L-sigma(xi)我们的目标min(sigma(ti*xi)+tn*(L-sigma(xi)))变形得(-max(sigma((tn-ti)*xi)))+tn*L常数不去管它,只考虑max的式子再来原创 2013-10-22 20:44:55 · 1249 阅读 · 0 评论 -
【圆的反演变换】hdu4773
这个blog解释的挺不错:http://blog.csdn.net/acdreamers/article/details/16966369给定不相交的两个圆以及圆外一点,找一个经过给定点的圆与其他两个圆相切首先来看反演变换,首先是给定一个圆圆心为O,半径为R1、圆外一点P与圆内一点P‘会一一对应的反演OP*OP'=R*R2、经过O的圆,反演后成为不经过O的一条直线3、不经过O的原创 2014-03-09 21:46:21 · 2547 阅读 · 0 评论 -
【圆的反演变换+cdq分治】共点圆
http://www.tsinsen.com/ViewGProblem.page?gpid=A1381原创 2014-07-04 15:56:59 · 1213 阅读 · 0 评论 -
【ctsc2012】solution
梭哈游戏题意:给定一系列比较规则,并给出A,B当前手牌,讨论牌抽完后,A能赢B的概率比较规则比较复杂,可以先判牌形,再将花色大小压成一个数,排序后我们就只要统计,在某副手牌之前的手牌中,有多少个与其无重复手牌,判重工作可以由容斥原理和hash表完成,对于每副手牌需要2^5判断复杂度为o(手牌数*2^5),手牌数最多只有c(51,5)5s时限还算充裕,对于hash,我们考虑用53进制压位,因原创 2012-05-19 16:57:28 · 2070 阅读 · 0 评论 -
【除草】一些稍难题
hdu4623通过打表发现很多数字在考虑互质的情况是dengjia原创 2014-07-13 14:16:11 · 856 阅读 · 0 评论 -
【除草】一些题目
hdu4304一段n*n的墙,用一个刷子来刷,要求刷子的第一根毛在第一个原创 2014-07-08 15:23:22 · 1290 阅读 · 0 评论 -
COCI 2011/2012 CONTEST #3
题意:一个工厂制造产品,有N个流程。第i个流程的时间系数是Ti。有M个产品要制造,第i个产品的容易程度是Fi。一个产品j,在流程i所需时间为TiFj。流程顺序不可颠倒,产品也必须按给定的顺序制作。一旦一个流程完成,就交给下一个流程。此时,下一个流程必须是空闲的,不然就会出错。问完成所有产品需要的时间。数据满足1 ≤ N ≤ 100000,1 ≤ M ≤ 100000。(原创 2012-02-14 15:52:00 · 1578 阅读 · 0 评论 -
线段相交与射影坐标
判断线段相交跨立实验+排斥实验排斥:矩形相交跨立:叉积判点位置射影坐标点X(x,y,1)直线U(a,b,c)(一般式)两点求直线X1 X X2直线交点 U1 X U2(无交点即x3=0)点在直线上 X * U=0过X的U的垂线 X X U(有待商榷,感觉有问题,但陈可卿ppt是这么写的)X在U上的垂点 (X X U)X U过X原创 2011-12-29 12:48:18 · 996 阅读 · 0 评论 -
坐标旋转
坐标旋转挺好用的。基本公式:x1 = cos(angle) * x – sin(angle) * y;y1 = cos(angle) * y + sin(angle) * x;证明:http://archive.cnblogs.com/a/2176814/但是,这只适用于关于原点的,对于任意点则么办呢?我用的方法是,先把原点平移到旋转中心,旋转完后再原创 2012-01-02 14:41:58 · 574 阅读 · 0 评论 -
旋转卡(qia)壳 平面最远点对
旋转卡壳原创 2011-05-22 20:33:00 · 1373 阅读 · 0 评论 -
二分+叉积 apio2011 陈可卿 计算几何的一道简单题 poj2318 兼集训总结
这两天是省选,作为高一实在没什么竞争力,但奥特曼依旧杀入省队。apio讲这道题的时候,我一下灵光一闪,想到了二分,之前除了在nlogn的最长上升子序列用过一次,就再也没用过,只知道跟单调性有关,apio时一见这道题便突然明白二分和单调性的关系。跟二分颇有缘分,集训时碰到一原创 2011-05-29 17:39:00 · 2420 阅读 · 4 评论 -
自适应辛普森
数学没学好还真吃亏。首先介绍下辛普森公式(没法帖图片,只能口述),对于一段函数,我们要求面积,除了求反导之外,有一种近似方法,即用辛普森公式。(来自维基)a,b分别指函数最左端和最右端,这个公式推导可以去维基上看,他有个直观的应用便是求拟柱体(比如棱柱)体积,f函原创 2011-08-30 21:10:22 · 4123 阅读 · 5 评论 -
扫描线
(一)矩形周长并:思想:http://www.cnblogs.com/Booble/archive/2010/10/10/1847163.html将x排序当时间点,每个时间点插入或删除在y轴上的线段,并统计上个时间点到此时间点增加的周长。x->两时间点距离,n->y轴上线段团数,m->y轴上线段覆盖总长。对于线段处理思路:http://blog.csdn.net/cjo原创 2012-01-13 10:52:30 · 971 阅读 · 0 评论 -
动态维护凸包
依次插入n个点,询问凸包面积。利用granham思想,维护凸包,水平序要维护两个凸壳,比较麻烦,所以用极角序,每次查入用平衡树维护极角离他最近的点,此时到双向链表上开始模拟granham双向删点,直到无法删为止,因为每个点至多删一次,所以是nlogn的复杂度。面积维护用叉积即时维护即可。依次插入n个半平面,询问半平面交面积。与上题类似,维护法向量的极角,双向删半平面(当相邻一半平面两交原创 2012-02-03 21:07:08 · 3698 阅读 · 0 评论 -
Minkowski和
两个凸集的和(每两个不同集的x,y分别相加得新点)为凸集。将两个凸集按同样时针求向量,极角排序后按向量走既得新凸集(但还需对应点平移)。应用:求两凸集距离。area求新凸集面积。不需平移,直接叉积。这道题证明二分快排是可以卡的。#include #include #include #include #include struct point{原创 2011-12-29 13:03:04 · 4296 阅读 · 0 评论 -
极角排序
先判象限再判叉积,如此而已。#include #include struct point{ int x,y,b;};point a[1000];int n;int cro(point e,point r){ // if (e.b!=r.b) return (e.b-r.b); return (e.x*r.y)-(e.y*r.x);}voi原创 2011-12-29 12:58:11 · 709 阅读 · 0 评论 -
半平面交
nlogn的排序增量。预备知识:射影坐标,极角排序,zzy论文。poj1755题意是有3场比赛,n个人,每个人对于每场比赛有3个速度,一个人的完成时间为完成所有比赛的总时间,现在对每个人询问,是否有3场比赛的分配路程方案使此人完成时间最短。转化为n-1+4个不等式求是否有解。当然可以用单纯形,但我不会,只好用半平面交。流程不是我总结的,就不贴了。我的原创 2011-12-29 15:36:39 · 1131 阅读 · 0 评论 -
【ural】
1400:略#include #include #include #include #include #include const int dx[4]={-1,0,1,0};const int dy[4]={0,1,0,-1};const double oo=1e300;using namespace std;struct point{int x,y;};queue原创 2012-12-18 14:30:02 · 986 阅读 · 0 评论