上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 27 下一页
摘要: 这个题首先判断是否是凸多边形,再判断圆心是否在凸多边形内,再判断凸多边形是否在圆内;做法用Graham判断是否是多边形;再把圆心加入到多边形的点之中,再用Graham看圆心是否在凸多边形上,如果在就代表圆心在凸多边形外;再用点到直线的距离,fabs(A*x + B*y + c)/sqrt(A*A + B*B);极角排序法:View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<q 阅读全文
posted @ 2012-07-11 09:14 wutaoKeen 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 输入输出超恶心的,这个题要注意的是线段不是规范相交,也算相交,没有图形包含的情况;思路:计算几何。思路并不复杂,枚举当前几何体的所有边和其他几何体的所有边比较。另外,已知正方形的一对不相邻的顶点(x0,y0),(x2,y2),可以由方程组:x1 + x3 = x0 + x2;x1 - x3 =y0- y2 ;y1 + y3 = y0 + y2;y3 - y1 =x0 - x2 ;求得另一对不相邻的顶点(x1,y1),(x3,y3)。矩形另外一个点为 x3 = x0 + x2 - x1 ,y3 = y0 + y2 - y1;View Code #include<iostream>#i 阅读全文
posted @ 2012-07-10 17:27 wutaoKeen 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 管道问题:题意:有一宽度为1的折线管道,上面各顶点为(x0,y0),(x1,y1)...(xn,yn),下面各顶点为(x0,y0-1),(x1,y1-1),....(xn,yn-1),假设管道不透明,不反射,光线从左边入口(x0,y0),(x0,y0-1)之间射入,向四面八方传播,问光线最远能射到的X的坐标或者射穿整个管道。这题用的是枚举法,枚举所有的上下点,要是最优,一定是一个上点与一个下点,这样才能使X最大;每次枚举一个上下点,就判断是否与线段相交,我用的方法是与它左边由对应的上下点作线段相交(即与(xm,ym),(xm,ym-1)的连线),如果他们的叉乘大于0,则没有相交;反则,相交,枚 阅读全文
posted @ 2012-07-09 12:55 wutaoKeen 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 这个题是要求钉两块木板接水,问你能接到多少水;这里有几种情况不能接到水:1 :两直线没焦点;2:一条直线是水平的,3 :上方没口子,4:上面的线段挡住了下面的线段使水不能落到里面去;这里要用到定比分点。View Code View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>#include<cstring>using namespace std;class Point{public: d 阅读全文
posted @ 2012-07-08 17:10 wutaoKeen 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 这个题要用到扩大数据运算,和投影;目的意思比较奇葩,给出N个正方形, 每个正方形是都45度放置,并且每个正方形都与X轴接触。因此产生一个序列, b1 – bn 。首先是插入操作,每次输入边长的时候将正方形插入到能插入的最左边, 什么意思了,结合图看一下, 就是s3本来可以插入到s1的前面,s1和s2的中间, 但最左边是s2,故插入到了s2的左边。在插入的的时候可以求得正方形的左区间和右区间,比如说s2.left = s1.right – fabs(s1.len – s2.len)/sqrt(2)s2.right = s2.len + sqrt(2)*s1.left两个计算中都有一个操作根号2的 阅读全文
posted @ 2012-07-07 16:24 wutaoKeen 阅读(379) 评论(2) 推荐(0) 编辑
摘要: 题意:国王想建一个周长最短的城墙,使墙的任意一点到城墙的距离都 > L。求这面墙的周长。我们知道在每个顶点的时候要计算弧度,其实我们知道每个都变形最后所有的弧形加起来会组成一个以L为半径的圆;这样周长就转换为凸包的周长+圆的周长;这里我自己写了两种关于Graham-scan不同的排序法;极角排序:View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#i 阅读全文
posted @ 2012-07-07 09:47 wutaoKeen 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 大致题意:一只蚂蚁,只会向左转,现在给出平面上很多个点,求解一种走法,能使得蚂蚁能经过的点最多,每个顶点该蚂蚁只能经过一次,且所行走的路线不能发生交叉.卷包裹法:形象思维假想一根无限长的绳子,一开始,左端粘在点集的最低点上。若有多个最低点,则去最做的最低点。然后拉动绳子的另一端逆时针绕行,每次紧贴一条边(这就是凸包上的一条边),这样绕行一周,绳子的形状就是凸包,这就是所谓的卷包裹法;该算法的效率比较低是O(n^2)的时间效率;View Code #include<iostream>#include<cstdio>#include<cstdlib>#inclu 阅读全文
posted @ 2012-07-06 16:47 wutaoKeen 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 这是一道简单而有趣的几何题。如果将每扇门的上下起点,加上起点与终点作为无向图的顶点,两个相互之间可以直达(即连线不经过任何障碍)的顶点之间连一条边,长度作为两点之间的距离,这样就可以转化为图论的最短路问题;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<cstring>#include& 阅读全文
posted @ 2012-07-06 11:15 wutaoKeen 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 跟http://poj.org/problem?id=2318是一样的;这里就不解释了;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>using namespace std;class N 阅读全文
posted @ 2012-07-05 21:55 wutaoKeen 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 这是一道计算几何题,这里用的是向量的叉积,由于隔板已经排好序了那么我们只要从左至右暴力过去可以了,条件是叉积大于0;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>using namespa 阅读全文
posted @ 2012-07-05 21:35 wutaoKeen 阅读(135) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 27 下一页