计算几何
文章平均质量分 69
gh546okmy
这个作者很懒,什么都没留下…
展开
-
CF 82E 题解 Corridor
题意:用y=h和y=-h表示围成的房子,在房子表面有一些线段表示窗户,房子外(0,f),(0,-f)有两个灯,问灯透过窗照到的总面积解法,sum=(灯照进去每个窗的面积总和)-用每个上面的灯透过上面的窗照进去的多边形对下面的灯照进去的多边形进行相交的面积(简单容斥)(因为不会有三个灯的面积相互相交(ps 因为窗不会相交))#include#include#include#incl原创 2014-11-29 09:26:47 · 449 阅读 · 0 评论 -
CF 70D Professor's task题解
动态凸包。。只能照着模板敲了。。还不太懂#include#include#include#includeusing namespace std;const double pi=acos(-1.0);double ax,ay,bx,by;double dis(double x,double y){ return sqrt(x*x+y*y);}double get(do原创 2014-12-09 13:01:05 · 759 阅读 · 0 评论 -
CF 54E Vacuum Сleaner
对于一个凸包形状的吸尘器,问你这个吸尘器在清理矩形的角落时,遗留下的最小面积,可以旋转;题解是计算从第i个点到第j个点所围成的面积,(从i到j 向量旋转不能超过90度),算出凸包的i与j连线在矩形中对应的长与宽,用长,宽,以及i,j连线构成的三角形减去前面的面积,就是够不到的角落,最后取最小值即可,注意顺时针逆时针都要来一次#include#include#include#inclu原创 2014-12-19 19:40:10 · 3687 阅读 · 0 评论 -
CF 50C Happy Farm 5题解
求个简单的凸包。。看坐标都是整数,用整点表示最后求出的凸包居然还有错,改成浮点数就a了,最后答案一定是从凸包起始点到终点的,每两个相邻点的x差与y差取最大值,然后求和+4,+4的原因是你要绕着走,相当于转一圈。还有一种简单方法是直接每枚举一个点,求(x+y,x-y,y-x,-y-x),取n个点中算出的这四个的最大值,最后求和+4,具体为什么不清楚,大神都是这么做的=。=#include原创 2014-12-19 19:26:48 · 469 阅读 · 0 评论 -
CF 62C
给定一些三角形,求其周长并。。。#include#include#include#include#includeusing namespace std;#define eps 1e-8int sig(double x){return (x>eps)-(x<-eps);}struct P{ double x,y; P(double a=0,double b=0)原创 2014-12-19 19:42:07 · 421 阅读 · 0 评论 -
hdu 5128 广州赛B题题解
#include#include#include#includeusing namespace std;#define eps 1e-8int sig(double x){return (x>eps)-(x<-eps);}struct P{ double x,y; P(double a=0,double b=0):x(a),y(b){} P operator原创 2014-11-24 09:39:50 · 499 阅读 · 0 评论 -
CF 78D Archer's Shot题解
求一个圆能包含多少个单位长的正六边形,从圆心开始枚举每一列有多少个六边形,从x=1,y=1,R,开始,中间的一列可以直接算出来,并算出最大y能取多少,数量就是y-2然后向右枚举每一列的y最大为多少,枚举到以后可得右边此列和左边此列共有(2*(y))个,最后计算总和即可#include#includeusing namespace std;long long n;long lon原创 2014-12-01 20:53:36 · 430 阅读 · 0 评论 -
CF 77E Martian Food题解
纯粹想法题。。想之前需要有反演的知识,给你一个大圆的半径,一个小圆的半径,一个数k,小圆与大圆相切,再放一个圆与小圆大圆均相切,//然后接着放圆,从此时计数,问第k大的半径是多少。从绿色圆开始计数,反演知识是,圆关于边上一点反演后是直线,圆关于圆外或者圆内一点反演后还是圆,以最左边的点进行反演,大圆和小圆得到了两条直线 x=1/(2R),x=1/(2r);其余圆反演后夹在这两条原创 2014-12-01 20:47:33 · 511 阅读 · 0 评论 -
hdu 5120 题解 Intersection
求两个圆环的交,感觉没有做错啊,结果c++一直wa,改了G++以后就过了,实在想不通#include#include#include#include#includeusing namespace std;#define eps 1e-8const double pi=acos(-1.0);int sig(double x){return (x>eps)-(x<-eps);}s原创 2014-11-29 19:33:01 · 390 阅读 · 0 评论 -
hnu oj 13102 Super Shuttle题解
求过一点作圆(点在圆上),最多能与平面上多少个圆相交反演变换:转换成直线经过多少个圆#include#include#include#includeusing namespace std;#define eps 1e-8const double pi=acos(-1.0);int sig(double x){return (x>eps)-(x<-eps);}struct P原创 2014-11-29 19:37:11 · 435 阅读 · 0 评论 -
CF 75E 题解 Ship's Shortest Path
给定两点,问两点经过一个多边形的最小花费,可以选择绕边走,花费是1,或者选择直接穿过多边形,花费是2,在多边形内部的花费是路程乘2简单题。。就是分类讨论1.两点确定的线段未经过多边形,花费=长度2.线段穿过多边形,花费=min(线段在多边形外的长+在多边形内的长*2,线段在多边形外的长+多边形较小那一半的周长)#include#include#include#include原创 2014-11-28 15:00:05 · 733 阅读 · 3 评论 -
CF 89D 题解
问一个运动的球能否碰到一群带刺的球,如果能请输出时间求解方程 (v*v)t^2-(2*l*v)t+l*l-(R+r)*(R+r)=0,t即为答案#include#include#includeusing namespace std;double x0,y2,z0,vx,vy,vz,R;double root(double x,double y,double z,double r原创 2014-11-29 19:31:02 · 648 阅读 · 0 评论 -
CF 87E 题解 Mogohu-Rea Idol
看了题解敲出来的,还wa了那么多发,吸取了一个教训,判断点在多边形内还有多边形上,要保证凸包任意三点不共线,否则会出错,题解也很简单。。就是对三个凸包求Minkowski和,然后判断点是否在凸多边形内即可#include#include#include#includeusing namespace std;#define eps 1e-8int sig(double x) {r原创 2014-11-26 15:02:40 · 631 阅读 · 0 评论 -
CF 55E Very simple problem 题解
very simple 一点都不simple =。=要求点能被多边形中选出的三角形包含的个数,这个需要考虑其对立面,总数减去不包含的个数(ps 题解真心强)不包含的个数的话,以一个点A为初始点,顺时针找到B ,AB形成的直线在p的右侧,此时构成的三角形个数为(A与下面k个点中选2个构成的三角形的个数),扫一圈,就可求出不包含的#include#include#include#原创 2014-12-12 16:28:08 · 396 阅读 · 0 评论