
计算几何
文章平均质量分 78
Non_Cease
这个作者很懒,什么都没留下…
展开
-
poj2318
给定一个如上的长方形箱子,中间有n条线段,将其分为n+1个区域,给定m个玩具的坐标,统计每个区域中的玩具个数。 解答:对每个玩具,二分线段下标,判断在线段左边还是右边,找到之后进行统计即可 #include #include #include using namespace std;struct Point { int x, y;};struct Line原创 2012-07-17 10:53:15 · 3088 阅读 · 0 评论 -
poj3348 求凸包面积
题目链接:http://poj.org/problem?id=3348题意:草地上有些树,用树做篱笆围一块最大的面积来养牛,每头牛要50平方米才能养活,问最多能养多少只羊凸包求面积,分解成三角形用叉积求面积。#include #include #include using namespace std;const double eps = 1e-8;int stk[1000原创 2012-07-26 14:16:12 · 2742 阅读 · 0 评论 -
poj1873 枚举+凸包
题目链接:http://poj.org/problem?id=1873题意:平面上有n棵树,现在要砍掉其中的一部分来做成篱笆将剩下的树包围起来,现在给出每棵树的坐标、价值和可以制造篱笆的长度, 求砍掉最少价值的树,将剩下的树包围起来,当两种方式的价值相同时,取砍掉树更少的方式。由于树棵树不大于15,可以二进制枚举情况,求出其它树构成的凸包的周长即可#include原创 2012-07-26 18:23:15 · 3369 阅读 · 0 评论 -
poj1654
题意:从直角坐标系的原点,移动n步,每一步,可以向八个方向移动(九宫格中间向周围的八个方向移动),最终会形成一个规范的多边形(可凸可凹),求多边形面积,简单利用叉积求多边形面积即可(有向面积的利用),注意要用__int64#include #include #include using namespace std;int dir[10][2] = {{0, 0}, {-1, -1原创 2012-07-27 22:15:56 · 2800 阅读 · 0 评论 -
poj2954 && poj1265 Pick定理求面积
Pick定理:具体看http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_1/index.html简要说明:对于格点多边形(即在一个网格中,所有的顶点均在格点上的多边形),其面积公式 A = b / 2 + i - 1; 其中b为在边上的格点数,i为在多边形内部的格点数格点多边形边上的格点数b的求法:每条边上原创 2012-07-27 22:32:06 · 3114 阅读 · 0 评论 -
poj1279 求核面积
初学半平面交算法,本来想自己敲一遍的,但是今晚确实比较晚了,于是直接套了昨天手敲的模版,竟然1A了,嘿嘿...今天总算还是做了一题。#include #include #include #include using namespace std;const int maxn = 1505;const double eps = 1e-8;int n, pn, dq[maxn],原创 2012-07-30 00:10:25 · 3207 阅读 · 0 评论 -
poj2451 半平面交
题目链接:http://poj.org/problem?id=2451题意:在(0,10000)*(0,10000)的坐标系上,给定n个半平面,求出它们围成的图形的面积每个半平面由两点(x1,y1)(x2,y2)确定的直线确定,规定半平面为直线的左边,即存在一点(x,y) 使得(x – x1) * (y – y2) – (x – x2) * (y – y1) = (x1 – x)原创 2012-07-29 01:26:51 · 5026 阅读 · 0 评论 -
poj3130 && poj3335 半平面交
这两个题,都是输入一个简单多边形,判断是否存在核,套半平面交模版即可。贴代码://poj3130#include #include #include #include using namespace std;const double eps = 1e-8;const int maxn = 55;int dq[maxn], top, bot, pn, order[maxn原创 2012-07-30 13:49:46 · 4197 阅读 · 1 评论 -
poj3384 半平面交,内推边
题目链接:http://poj.org/problem?id=3384题意:给定一个凸多边形,用两个半径均为 r 的圆来覆盖凸多边形,求覆盖最大面积时,两圆的圆心坐标,两圆必须完全在多边形内,两圆可以相交。做法:将凸多边形的每条边内移 r ,求半平面交,得到新的凸多边形,再以距离最远的两个顶点为圆心,这样得到的覆盖面积最大(拿笔画一画就能理解了)。注意一组数据(discuss中提到的)原创 2012-07-31 21:36:40 · 2805 阅读 · 0 评论 -
poj3525 二分+半平面交
题目链接:http://poj.org/problem?id=3525题意:给定一个凸多边形,求多边形中距离边界最远的点到边界的距离。思路 : 每次将凸多边形每条边往里平移d,判断是否存在核;二分d即可。#include #include #include #include using namespace std;const double eps = 1e-10;co原创 2012-07-31 16:43:10 · 3922 阅读 · 0 评论 -
poj2007
输入一个凸包且没有三点共线,输入的第一个点始终是(0,0),从(0,0)开始逆时针输出所有点极角排序输出即可。#include #include #include #include using namespace std;const double eps = 1e-8;struct Point { double x, y;} p[55];int dblcmp(d原创 2012-07-26 08:46:08 · 1756 阅读 · 3 评论 -
poj1228
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1228题意:题目输入一个凸包上的点(没有凸包内部的点,要么是凸包顶点,要么是凸包边上的点),判断这个凸包是否稳定。所谓稳定就是判断能不能在原有凸包上加点, 得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点。 很容易得到,当一个凸包稳定时,凸包的每条原创 2012-07-24 22:39:25 · 1798 阅读 · 0 评论 -
poj1113 Wall
题目链接:http://poj.org/problem?id=1113题意:平面上有一些点,求包围这些点且距离最外层的点的距离为L的图形的周长,所谓最外层即这些点的凸包,如下图: 拐点处为包围拐点的半径为L的扇形,所有的拐点处包围图形的总长度正好为一个半径为L的圆形的周长,所以所求答案为凸包长度+2*Pi*L#include #include #includ原创 2012-07-23 22:08:36 · 765 阅读 · 0 评论 -
poj2398 计算几何
poj2318的升级版,只是中间的n个隔板未排序,输出的是装有i个玩具的区域的个数,其他完全一样poj2318的解题报告见http://blog.youkuaiyun.com/non_cease/article/details/7754382#include #include #include #include using namespace std;struct Point {原创 2012-07-17 14:21:16 · 2083 阅读 · 0 评论 -
poj1556
题目链接题意:在平面直角坐标系上有一个10*10的正方形房间,房间中有n堵平行y方向的墙,每堵墙上有两扇门,问从房间最左边的(0,5)处,通过门,到达房间最右边的(10,5)处的最短距离思路:构造一个图,对图求最短距。构图:每扇门由两个端点构成,求出每堵墙上的门的端点到其他墙上的门的端点的距离(前提:这两个点能够直接相连不撞墙),当然,起点终点也要参与上述的求距离构图过程。原创 2012-07-18 19:29:14 · 1597 阅读 · 0 评论 -
poj3304 计算几何 线段与直线相交
题意:给定n条线段,确定是否存在一条直线,使得这n条线段在这条直线上的射影具有公共点可将问题转化为是否存在一条直线经过所有的线段,证明见依然的博客:http://blog.sina.com.cn/s/blog_6635898a0100n2lv.html#include #include #include using namespace std;const double e原创 2012-07-17 21:56:37 · 2734 阅读 · 0 评论 -
poj1039 Pipe (计算几何)
我的第一个计算几何的题目题意:给出一个曲折的管道,求出光线能够到达的管道的最远点的横坐标。思路:能够到达最远点的直线必然通过管道的一个上管道壁的折点和一个下管道壁的折点,枚举所有的这样的折点,求出最远能够到达的地方的横坐标。计算几何基础知识参见lrj黑书。#include #include #include using namespace std;//点定义原创 2012-07-16 13:03:42 · 2551 阅读 · 1 评论 -
poj1410 简单计算几何
题目链接:http://poj.org/problem?id=1410题意:判断一条线段与一个矩形(四条边以及中间包含的部分)是否相交思路:线段是否与四条边非规范相交,线段在矩形内部且与任一边不相交#include #include #include using namespace std;const double eps = 1e-8;struct Point {原创 2012-07-19 09:43:11 · 1992 阅读 · 0 评论 -
poj1696 求一条螺旋线,类似凸包
题目链接:http://poj.org/problem?id=1696题意:给定n个点,从最左下角那个点开始,求永不右转的最长路径。思路:贪心,始终寻找最外面的点就行了,最后得到一条螺旋线,思路和凸包中的卷包裹法类似,O(n*n)的复杂度,仍是0ms,无需极坐标排序#include #include #include #include using namespace原创 2012-07-20 18:02:40 · 695 阅读 · 0 评论 -
poj2826 An Easy Problem?!
题目链接:http://poj.org/problem?id=2826题意很简单:就是两根木块组成一个槽,问槽里能装多少雨水,注意雨水垂直落下思路也很简单,就是分类讨论,但是感觉讨论过程还是比较复杂的,纠结了一天:1.如果两条线段不相交或者平行,则装0;2.有一条平行x轴,装0;3.若上面覆盖下面的,装0;4.其它,叉积求面积。#include #include原创 2012-07-21 19:26:32 · 2322 阅读 · 1 评论 -
poj2074 Line of Sight
题目链接:http://poj.org/problem?id=2074题意:在平面直角坐标上,有一座房子和一些障碍物,还有一条property line,它们都是平行于x轴的线段,若游客站在property line上观看房子, 求property line上最长的一段,使得游客能够看到房子的全貌。思路:对每个障碍物,求出它能够挡住游客的那一段,具体方法是:求出房子的右原创 2012-07-22 21:49:23 · 1947 阅读 · 3 评论 -
poj3347 Kadj Squares
题目链接:http://poj.org/problem?id=3347题意:有一些正方形相互靠着(第一个左边靠着y轴),与x、y轴所成角为45度,问:从上往下看,能看得到哪些正方形(看得到部分即可),并按编号的升序排列。思路:求出每个正方形最左和最右边点的坐标,再对任意一个正方形,根据它与其它正方形的边长和最左最右点坐标的关系,更新每个正方形最左最右点的坐标, 最后若最原创 2012-07-22 21:17:06 · 1303 阅读 · 0 评论 -
poj1755 半平面交解不等式组
题目链接:http://poj.org/problem?id=1755题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi; 对每个人判断,通过改变3项比赛的路程,是否能让该人获胜(严格获胜)。思路:题目实际上是给出了n个式子方程,Ti = Ai * x + Bi * y + Ci * z , 0 要判断第i个人能否获胜,即判断不等式组 Tj原创 2012-08-01 22:50:01 · 5713 阅读 · 0 评论