
几何
silentsaber~
晨意微寒秋渐深,侧畔无事俏佳人
展开
-
bzoj1007[HNOI2008]水平可见直线
还记得做过一道简单的题:给出很多直线(给定斜率和在y轴上的截距),求可见直线的数量。那道题比较简单,n^2的枚举就可以过,就是对每条直线维护一个区间[l,r],只要[l,r]不为空,这条直线就能被看见。这里差不多也是求可见直线这里数据是50000条,n^2是肯定不能过的.考虑把直线按k升序排列对于一条直线i-1和一条直线i,因为k是升序排列,它们交点原创 2016-03-02 09:23:06 · 419 阅读 · 0 评论 -
计算几何速成
之前一直没接触过计算几何,不过几何题大多都是嘴上说起来轻松,操作起来恶心的~~先来看看怎么定义一些东西:①定义点类(向量类):struct point{ double x,y;};要计算点可以先重载+,-,*,/ 以及各种比较。(向量也可以看成是点,如果它的端点是原点的话 ||同理,点也可以看成是向量)②定义线段: 记录2个端点③定义直线:stru原创 2016-03-21 10:27:43 · 409 阅读 · 0 评论 -
scoi2015小凸想跑步
http://www.lydsy.com/JudgeOnline/problem.php?id=4445这次是重做,但发现自己被读入优化坑了,不造为什么,反正改了就过了,坑爹~~~double坑爹scoi2015day1 攻克完成(虽然是看了题解的很水攻克~~)之前写过思路了,这里不再说了~~~转成不等关系跑半平面交(吐槽:还是推不等式ax+by+c#include#原创 2016-04-01 16:01:53 · 540 阅读 · 0 评论 -
scoiday1T3&&bzoj4445小凸想跑步
几何题啊,据说是裸的半平面交,but我还是WA了好几发。逆时针给定一些点,求多边形内到第一条边面积比到其它边小的点的概率(用范围/总面积)然后可以设该点为(x,y),到所有边的面积表示出来,然后建立不等关系,化简约分后我们可以得到一系列关于x,y的不等式,形如ax+by然而有两个bug我没考虑到,一个就是要保证(x,y)的点在凸多边形内部,怎么保证?先把所有的半原创 2016-03-22 08:34:28 · 1523 阅读 · 1 评论 -
bzoj2618凸多边形面积交
http://www.lydsy.com/JudgeOnline/problem.php?id=2618(⊙v⊙)嗯,几何大水题题意是要求n个凸多边形(逆时针给定点)的面积并,数据很弱。把每个多边形拆成直线,然后扫一遍做半平面交,最后统计答案就可以了:#include#include#include#include#include#include#i原创 2016-03-22 10:08:08 · 1567 阅读 · 0 评论 -
poj1375 圆的切线
给一个源点s,给一些圆,源点和s相切会形成阴影,求阴影并。如果能求出所有的圆构成的阴影,sort扫一遍就好了。怎么求,我们可以看成是s到圆的切线的直线和x正半轴求交点。我们可以计算圆心到s的距离,也可以得到那条直线,利用arcsin(r/d)得到一个角度,把直线旋转这个角度就得到了s和圆的切线(顺指针逆时针各得到一条),一段阴影就求到了。多段阴影拆成进边和出原创 2016-03-22 19:37:49 · 673 阅读 · 0 评论 -
POJ - 3335 旋转计分板nlog n
http://poj.org/problem?id=3335判断一个多边形内核是否存在。先搞一下顺时针和逆时针,统统改为逆时针,然后求一下半平面交,这里onleft要用《=,我调了很久也没看出个所以然,然而不用《=就挂了。跪求路过的神犇解释一下~#include#include#include#include#include#include#includ原创 2016-03-22 19:50:38 · 471 阅读 · 0 评论 -
UVA10652【凸包计算】
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1593给一些矩形(给定中心(x,y)长w宽h,和旋转角j)求一个最小多边形把所有的矩形包围,输出矩形所占多边形的面积比。可以想到是把矩形拆成4个点然后跑凸包。由于第一原创 2016-03-23 11:44:46 · 1070 阅读 · 0 评论 -
POJ2187-最远点对->旋转卡壳(怎么开心怎么读)
给n个点,求最远点对,nn^2暴力可以过么- -|| 给了3s不过据说凸包+n^2暴力可以过,没有卡数据。不过跑的最快的应该就是凸包+旋转卡壳了。对于一个凸多边形,我们可以尝试用两条相平行但反向的有向直线去夹,一定能够夹住。 夹住的两个点为对踵点。我们可以看成是对于每一条边,都找到一个最高的点,使得和它构成的三角形面积最大。 然后再转动原创 2016-03-23 15:16:37 · 871 阅读 · 0 评论