计算几何
文章平均质量分 77
sdj222555
这个作者很懒,什么都没留下…
展开
-
POJ 1873 The Fortified Forest 凸包+枚举
题意:一个人有好多树,这些树有坐标,有价值,以及砍下这颗树能造多长的篱笆。 现在他要保护自己的树不被别人砍,就需要用篱笆把树围起来,但是需要从自己的树中砍下来几棵树造成篱笆,所以问题就来了,如何砍最少价值的树把剩余的树围起来。如果价值一样,就找砍树数量少的。 看到这道题的数据范围我就笑了,直接指数级别的枚举就行了。然后求凸包。 /* ID: sdj22251 PROG: su原创 2012-03-27 09:39:56 · 699 阅读 · 0 评论 -
POJ 2318 TOYS 二分+叉积
入门计算几何 判断在哪个区域内只需看跟某条线的叉积即可 可以保证单调性,所以可以进行二分 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100001 #define MAXM原创 2013-10-24 22:24:42 · 715 阅读 · 0 评论 -
POJ 1556 The Doors 计算几何+ 最短路
计算几何入门 枚举任意两个点,看连成的线段之间是否交于其他线段,如果中间没交与其他线段,表明两个点可通过直线到达 然后将所有的这种都跑出来。 建图求最短路即可 #include #include #include #include #include #include #include #include #include #include #includ原创 2013-10-24 22:32:30 · 867 阅读 · 0 评论 -
POJ 3347 Kadj Squares
贪心即可 对于一个方块。 如果比之前的方块边长小。 就可以塞到之前方块的下面 如果比之前的方块边长大。 就要靠在之前的所有方块上比一下。找最大的一个位置就是。 #include #include #include #include #include #include #include #include #include #include #include #de原创 2013-10-24 22:43:03 · 681 阅读 · 0 评论 -
POJ 1039 Pipe
枚举任意两个点作为直线。 看是否能穿越整个管道即可。 判断相交使用叉积。 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005 #define MAXM 211111 #def原创 2013-10-24 22:46:21 · 708 阅读 · 0 评论 -
ZOJ 3570 Lott's Seal 计算几何
题目大意是 有一些点,然后我们要用一个六角星形将任意这些点连成的直线覆盖。 并且这些点构成的凸包面积必须满足小于某个值 六角星形的中心点和半径已经给定了。 就是一个判定问题了。 首先要判断所有点是否都在六角星形内 我们观察这个形状,发现是两个三角形组成的图形。 那么只需判断某个点是否在某个三角形内即可 这里就用到叉积就行了。 然后对所有点求个凸包。 求个面积 然后看这些原创 2013-10-30 17:22:35 · 993 阅读 · 0 评论 -
POJ 3525 Most Distant Point from the Sea 二分+半平面交
题目就是求多变形内部一点。 使得到任意边距离中的最小值最大。 那么我们想一下,可以发现其实求是看一个圆是否能放进这个多边形中。 那么我们就二分这个半径r,然后将多边形的每条边都往内退r距离。 求半平面交看是否存在解即可 #include #include #include #include #include #include #include #include #inc原创 2013-11-01 13:02:36 · 1180 阅读 · 0 评论 -
POJ 1113 凸包
易知 先求凸包,然后圆弧部分跟每个内角有关 经过计算发现圆弧总共加起来就是一个圆 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 111111 #define MAXM 211111 #def原创 2013-11-01 12:48:30 · 969 阅读 · 0 评论 -
POJ 1265 pick定理
pick公式:多边形的面积=多边形边上的格点数目/2+多边形内部的格点数目-1。原创 2013-11-01 12:51:45 · 968 阅读 · 0 评论 -
POJ 1755 Triathlon 半平面交
看的这里:http://blog.csdn.net/non_cease/article/details/7820361 题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi; 对每个人判断,通过改变3项比赛的路程,是否能让该人获胜(严格获胜)。 思路:题目实际上是给出了n个式子方程,Ti = Ai * x + Bi * y + Ci * z , 0原创 2013-11-01 12:56:59 · 1384 阅读 · 0 评论 -
POJ 计算几何入门题目推荐
计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠。 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。 4.注意精度控制。 5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点转载 2013-10-17 12:56:02 · 1581 阅读 · 0 评论 -
POJ 2074 Line of Sight
思路很清晰。 首先排除掉不在house和pro之间的障碍物 然后对每个障碍物,将站在直线上不能看到整个house的区间求出来。 最后对这些区间,扫一遍,贪心求一下即可 #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-10-24 22:53:49 · 1045 阅读 · 0 评论 -
POJ 1584 A Round Peg in a Ground Hole 圆是否包含在凸包内
首先判断是否是逆时针给出的多边形。 用叉积判断即可。 如果不是逆时针,就reverse成逆时针的。 然后判断是否是凸包,还是用叉积。 然后就判断圆心是否在凸包内 很好判断,用叉积,逆时针扫一遍点就行。 然后就要判断圆心到各个边得距离要大于半径。 这里最好用叉积,以免丢了精度, 叉积就是那个四边形的面积,除以边长就是点到边得垂直距离。 #include #includ原创 2013-10-24 22:51:20 · 885 阅读 · 0 评论 -
POJ 3714 Raid 最近点对
求最近点对,只不过这两个点需要属于不同的集合,那么就给两个集合的点分别标记一个id号,在计算时,两个集合合并起来,并排序,递归求解,只不过,求两点距离时,如果id号是同一集合的,直接返回一个很大的数就行了,这样就跟求一个集合的最近点对没什么区别了。 /* ID: sdj22251 PROG: calfflac LANG: C++ */ #include #include #include原创 2011-08-18 21:00:09 · 930 阅读 · 0 评论 -
HDU4606 Occupy Cities 计算几何+最小路径覆盖
题目大意如下 在一个二维坐标系中,有n个城市,坐标给出来了,然后有p个士兵要去占领这n个城市,但是路上有m个路障,都是线段,士兵不能越过路障前进。 每个士兵都有相同容量大小的一个干粮袋,每到一个城市他就能补充满自己的干粮袋。中途走路时走一个单位长度就消耗一个单位的干粮。 现在问的是这些个干粮袋最小的容量是多少,前提是保证p个士兵能占领完这n个城市,城市被占领顺序也是题目给好的,必须遵守原创 2013-08-15 09:31:47 · 1306 阅读 · 0 评论 -
POJ 3304 Segments 线段交
计算几何入门 将所有的线段的端点存起来,枚举任意两个端点构成的直线,看是否能穿过所有线段即可 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005 #define MAXM 21原创 2013-10-24 22:26:30 · 599 阅读 · 0 评论 -
POJ 1269 Intersecting Lines 直线交
计算几何入门 无非是平行, 重合和相交 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005 #define MAXM 211111 #define eps 1e-8 #defi原创 2013-10-24 22:29:58 · 666 阅读 · 0 评论 -
POJ 2653 Pick-up sticks 线段交
直接暴力即可,因为题目中说了top line不超过1000个。 所以理论复杂度不会非常大 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005 #define MAXM 211111 #原创 2013-10-24 22:34:02 · 751 阅读 · 0 评论 -
POJ 1066 Treasure Hunt 线段交
要到达目标点。 必然会经过一系列的线段 在这些线段上,在哪里开门都是一样的。 所以只需枚举边上的点到目标的点连接的线段中间交多少线段,求最小即可 #include #include #include #include #include #include #include #include #include #include #include #define原创 2013-10-24 22:35:50 · 672 阅读 · 0 评论 -
POJ 1410 Intersection 线段交
计算几何入门 判断线段是否与一个矩形相交 包含在内部也算 那么判断是否在矩形内部,只需叉积即可 判相交就判断跟矩形的四条线段相交即可 #include #include #include #include #include #include #include #include #include #include #include #define原创 2013-10-24 22:37:44 · 718 阅读 · 0 评论 -
POJ 1696 Space Ant 贪心
每次选择向左偏移角度最小的下一个点即可。或者说左边点最多的点。 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100005 #define MAXM 211111 #define eps 1e-原创 2013-10-24 22:39:24 · 626 阅读 · 0 评论 -
POJ 2826 An Easy Problem?!
这题的恶心程度一流。 卡精度貌似丧心病狂。。 WA了一版。 最后G++过不了,C++过的。 考虑好DISCUSS中的情况基本就行了、 #include #include #include #include #include #include #include #include #include #include #include #define MAXN 100原创 2013-10-24 22:44:57 · 839 阅读 · 0 评论 -
POJ 3449 Geometric Shapes
判断多边形是否相交只需把多边形拆成一条条的线段,然后看线段是否相交即可 其中需要注意的是正方形顶点的求法,最好不使用三角函数去求。看我代码中的方法。 然后就比较好搞了 #include #include #include #include #include #include #include #include #include #include #includ原创 2013-10-24 22:48:23 · 1415 阅读 · 0 评论 -
POJ 3384 Feng Shui 半平面交
题目给出两个圆和一个多边形 问是否能让两个圆在多边形内。 并且覆盖的面积最大 圆的半径为r,我们则让多边形的每条边都往内部退r距离。 然后求半平面交得出的点集中,最远的两个点则是两圆的圆心即可 #include #include #include #include #include #include #include #include #include原创 2013-11-01 12:59:45 · 1246 阅读 · 0 评论