
计算几何
文章平均质量分 71
winkloud
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 1905 Expanding Rods (二分+计算几何)
题意:一根木棒恰被夹在两堵墙中间,受热这跟木棒会膨胀,求膨胀后木棒偏离原位置的最远距离。分析:木棒由于两段被卡住,膨胀后为圆弧的一段(圆的张力最大),就是求弦到弧的距离了。这题有三个未知量:圆半径,弧的角度,还有最后要求的答案。这三个未知量知道一个就可以求出另外两个,所以此题有三种解法,即对三个未知量分别二分。另外注意c++和G++对double的输出不同。交错了就wa。。。//Mem原创 2012-08-08 12:04:51 · 478 阅读 · 0 评论 -
POJ 2187 Beauty Contest (求平面最远点对)
很久以前的凸包模版题,又被翻了出来验证旋转卡壳法。。求凸包后枚举2点求距离也可以的。//Memory: 548K //Time: 110MS#include #include #include using namespace std;#define N 50001int top;int max(int a,int b){ return a>b?a:b;}struct原创 2012-08-27 23:45:52 · 459 阅读 · 0 评论 -
hdu 3174 logo (已知角度求点)
如此一道水题,比赛时居然卡了我3个小时。。天啊!!思维定式要人命啊!!//Time:15MS //Memory:244K#include #include #include const double PI=acos(-1.0);double x,y,th;void fd(int l){ x+=l*sin(2*PI*th/360); y+=l*cos(2*PI*th/36原创 2012-08-26 23:05:23 · 913 阅读 · 0 评论 -
POJ 2826 An Easy Problem?! (判点与线段的位置,求线段交点)
真的不是简单的问题啊!雨水从上方落下。接不到雨的情况:注意这两种是可以接到雨的都判断清楚了这题就好做了。//Memory: 192K //Time: 32MS#include #include #include #define EP 1E-6#define INF 1E100using namespace std;struct POINT{原创 2012-08-20 21:43:41 · 719 阅读 · 0 评论 -
POJ 1039 Pipe (枚举,判线段相交)
题目大意:一根由平行线段组成的管道,给出管道的上端折点,下端折点比上端折点高度少1。有一束光从入口射入,求可以照到的最远位置。思路:枚举任意两点,从入口处开始判断光线是否通过折点出(即与折点竖直线段相交)。记录最远位置并判断,输出即可。开始脑抽,总觉的光要沿着入口上下点射入。。放了三天果断1A了。。//Memory: 252K //Time: 63MS#include #inc原创 2012-08-18 21:53:36 · 452 阅读 · 0 评论 -
ZOJ 1010 Area (判线段相交,简单多边形的面积)
首先要判断出不合法的多边形(impossible),即与非邻边有交点的多边形,或者n第二就是计算简单多边形面积,计算方法就是计算每点和左右点对X轴的三角形面积(输入点要按逆时针排列,否则计算结果为负值)。具体情况不清楚的话画个图模拟一下就显而易见了。模版的力量是伟大的。//Memory: 232 KB //Time: 30 MS#include #include #include原创 2012-08-18 10:06:56 · 1114 阅读 · 0 评论 -
POJ 1265 Area (简单多边形求面积+pick公式)
pick定理:面积=内部点数+边上点数/2 -1;开始做的时候脑袋发昏,敲了一个小时的模版,枚举点判断与多边形位置,果断TLE等脑子清醒了,多画了几个图,数了几次点,就A了。。//Memory: 180K //Time: 0MS#include #include struct POINT{ int x,y;};POINT p[110];int gcd(int a,in原创 2012-08-16 00:19:05 · 592 阅读 · 0 评论 -
POJ 2074 Line of Sight(判线段与直线相交)
题目大意:一栋漂亮的房子希望道路上的人可以看见,但是有一些障碍物在房子周围,无法透过障碍物看到房子。求可以在道路上看到房子的最大连续距离。有这么两点要注意:障碍可能在房子后,与房子平行,或者在道路的另一侧。这些障碍都不用算的。障碍可能在道路和房子外。(总之就是障碍可能在anywhere!)所求的是最大连续距离。//Memory: 216K //Time: 0MS#includ原创 2012-08-14 23:37:36 · 786 阅读 · 0 评论 -
POJ 1434 Fill the Cisterns!(计算几何,二分)
一些不同高度的水箱组成连通器,求装下V体积液体时液面的高度将水箱按底部高排序。然后二分液面高度就可以了//Memory: 1744 KB //Time: 1391 MS#include #include using namespace std;struct cistern{ __int64 b,h,s; __int64 v;};cistern c[50004];b原创 2012-08-13 23:55:29 · 825 阅读 · 0 评论 -
POJ 1228 Grandpa's Estate (求稳定凸包)
一个凸包丢了一些点,剩下的点能否表示原凸包?先看一下什么情况下可以表示原凸包:现有的凸包每边都有3个以上的点。这样丢掉的点必定也在凸包上,否则现有的点不再凸包上,与已知不符。做法就是根据所给点再算一次凸包,判断每边是否有三个以上的点。注意,n常用的凸包模版有时会包含边上的点(比如起始三点共线),有的时候不会。借此机会整理下自己的凸包哈!//Memory: 260K //Ti原创 2012-08-11 10:25:48 · 985 阅读 · 0 评论 -
POJ 1654 Area (叉积求三角形面积)
一不明生物从原点出发,各种绕啊绕,绕啊绕,绕啊绕。。。。。求所绕过的面积。从原点出发,每走一次,与原点就形成了一个三角形。。他走过的区域,就是这些三角形的和所以就是算三角形面积了。三点叉积除2就是三角形面积了//Memory: 1228K //Time: 32MS#include #include #include #include using namespace std原创 2012-08-10 23:20:09 · 2316 阅读 · 0 评论 -
POJ 1696 Space Ant (向量的叉积)
一只很特殊的蚂蚁,只能向坐转,并且不能经过已经走过的路。一张地图上有n个食物让蚂蚁去采集,求蚂蚁经过食物的顺序。一开始想偷懒,直接甩graham凸包模版上去,加了一条判断和搜索点的重排。。果断WA好吧果然还是不能偷懒啊!每确定一个点以它为起点找逆时针一个个碰到的点。。其实大概或许就是卷包裹求凸包了吧。。不太了解的说。。判断点用的就是叉积了//Memory: 260K //Time:原创 2012-08-10 20:38:59 · 1101 阅读 · 0 评论 -
POJ 1556 The Doors (计算几何+dij最短路)
好题啊好题!一个10*10的房间里,有n堵墙。每堵墙有两扇门,求最短路经先枚举门的端点,在判断端点连线是否有与其他墙相交,构图,最后dij求最短路!思路一定要清晰。最后,这题的数组最好开大点。不要天真的以为它只有9堵墙。。它有18堵啊有木有!!//Memory: 528K //Time: 0MS#include #include #include #define inf原创 2012-08-10 00:18:06 · 786 阅读 · 0 评论 -
POJ 2653 Pick-up sticks (判线段相交)
一个人往地上扔棍子,相交的话,先扔的就会被压在下面,问最后哪几条棍子(线段)没有被压住?就是判线段相交了。。从下往上搜,被压住的话就不必判断了,这样的时间复杂度小于O(nlogn)如果从上往下搜,就是O(nlogn)嗯。。时间复杂度不是很懂啦,谁帮我分析下这个题的复杂度,反正从上往下搜会TLE~//Memory: 3408K //Time: 547MS#include #inc原创 2012-08-10 12:23:55 · 542 阅读 · 0 评论 -
POJ 3304 Segments(判线段与直线相交)
开始看错了题意,以为是要投影到其中一条线段上,WA N次。。ORZ~实际的意思是,投影到任意条直线上都可以,只要投影间有交点即可。那么过这条被投影的直线做垂线,垂线必过所有的线段。如何求出垂线呢?因为垂线与所有线段相交,在保证相交的前提下旋转,那么最终会定于两线段端点。那么枚举端点,在对所有线段做跨立验证即可//Memory: 204K //Time: 32MS#include原创 2012-08-09 00:04:56 · 515 阅读 · 0 评论 -
POJ 2318 TOYS (点与线段关系)
一个玩具箱被n个挡板分成n+1快,挡板不会互相交叉。将m个玩具扔进去,求分别被扔进了哪个区域。主要算法就是判断点与线段的关系,排序后从左往右依此判别即可。//Memory: 480K //Time: 485MS#include #include #include using namespace std;struct POINT //点{ double x,y; P原创 2012-08-08 20:05:33 · 370 阅读 · 0 评论 -
POJ 2398 Toy Storage (判断点与线段关系)
和2318一样的题。。输出改下就好了。思路就是判断点和线段的关系。。//Memory: 484K //Time: 16MS#include #include #include using namespace std;struct POINT //点{ double x,y; POINT():x(0),y(0){}; POINT(double _x, doubl原创 2012-08-08 20:35:55 · 420 阅读 · 0 评论 -
POJ 1113 Wall (凸包)
凸包基础题,求凸包周长。最后加上一个半径为L的圆即可。不理解的话算一下多边形内角和。//Memory: 236 KB //Time: 63 MS#include #include #include #include #define PI 3.14159265using namespace std;int top;struct POINT{ double x,y;};P原创 2012-08-08 18:05:08 · 332 阅读 · 0 评论 -
POJ 1873 The Fortified Forest (枚举+凸包)
看了很久了的题了,集训的时候就看过,每棵树有自己的价值和长度,现在要砍掉一些书做成栅栏,来围起剩余的树,并要使砍掉的树价值总和最小。当时觉得有价值,树也有砍与不砍2种状态,就觉得这是DP,然后在死胡同里绕啊绕~~后来才发现,树2要从数据量上推算法啊!//Memory: 216K //Time: 172MS #include #include #includ原创 2012-09-12 20:19:54 · 604 阅读 · 0 评论