上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 38 下一页
摘要: 半平面交模板#include #include #include #include #include using namespace std;const int MAXN=110;const double eps=1e-8;struct point { double x,y;};point pts[... 阅读全文
posted @ 2014-08-06 15:03 chenjunjie1994 阅读(177) 评论(0) 推荐(0) 编辑
摘要: /*半平面交求核心的增量法:假设前N-1个半平面交,对于第N个半平面,只需用它来交前N-1个平面交出的多边形。算法开始时,调整点的方向为顺时针方向,对于是否为顺时针,只需求出其面积,若为正,必为逆时针的。对于每相邻两点求出一条直线,用该直线去交其半平面,并求出交点及判断原多边形点的方位。*/ #in... 阅读全文
posted @ 2014-08-06 13:53 chenjunjie1994 阅读(126) 评论(0) 推荐(0) 编辑
摘要: bitch bitch bitch...TLE,WA一大坨,我是在拿生命来JUDGE啊。。不得不说,UVA上的数据根本不是随机的,而是有预谋的。 for(int i=2;i1&&cross(p[i],p[st[stop-1]],p[st[stop-2]])>=0) stop--; //这个我本来是... 阅读全文
posted @ 2014-08-05 21:36 chenjunjie1994 阅读(444) 评论(0) 推荐(0) 编辑
摘要: /*这是用的有旋转卡壳的思想。首先确定i,j,对k进行循环,知道找到第一个k使得cross(i,j,k)>cross(i,j,k+1),如果k==i进入下一次循环。对j,k进行旋转,每次循环之前更新最大值,然后固定一个j,同样找到一个k使得cross(i,j,k)>cross(i,j,k+1)。对j... 阅读全文
posted @ 2014-08-05 00:13 chenjunjie1994 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 呃,不知道我用的算不算卡壳,总有点枚举的意思。先求凸包,然后,枚举其中一点,再枚举另一点作为结尾,这个向量旋转一周后,求出最大值面积。这里面用的是旋转卡壳判断的那个式子。PS:下一篇和这题是一样题意,但用这题的写法去过下一题,是过不了的。但这个写法在POJ 上是400MS,而下一题的写法在POJ上是... 阅读全文
posted @ 2014-08-04 21:02 chenjunjie1994 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 1.计算P上y坐标值最小的顶点(称为 yminP )和Q上y坐标值最大的顶点(称为 ymaxQ)。2.为多边形在 yminP 和 ymaxQ 处构造两条切线 LP 和 LQ 使得他们对应的多边形位于他们的右侧。此时 LP 和 LQ 拥有不同的方向, 并且 yminP 和 ymaxQ 成为了多边形间的... 阅读全文
posted @ 2014-08-04 20:06 chenjunjie1994 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 旋 转卡壳水题。直接使用旋转卡壳求距离。#include #include #include #include #include using namespace std;const int MAXN=50100;struct point { int x,y;}p[MAXN];int n;int st... 阅读全文
posted @ 2014-08-03 15:36 chenjunjie1994 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 最小圆覆盖#include #include #include #include using namespace std;const double eps=0.00000001;struct point { double x,y;}p[110];struct circle{ point cent; ... 阅读全文
posted @ 2014-08-01 22:27 chenjunjie1994 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 最小圆覆盖问题。根据黑书上的算法写的。定理:PI不在当前的圆内,则必在扩张后的圆上,即扩张后的圆必定经过PI。因为求最小圆使用的是点增量法,把问题规模由1增加到N。所以,每次增加规模时,必须先确定该点是否在圆内,若不在,则扩展。并以当前点为其中之一点,然后在P1,P2,....P(I-1)枚举另外两... 阅读全文
posted @ 2014-08-01 19:23 chenjunjie1994 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 水题。不过,题意。。呵呵了。。围一个凸包,求出面积,然后除以50就可以了。#include #include #include #include using namespace std;const int MAXN=10500;struct point { int x,y;}p[MAXN];int ... 阅读全文
posted @ 2014-07-31 22:04 chenjunjie1994 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 按位枚举,按最小价值,最小砍掉树剪枝就好了。#include #include #include #include #include using namespace std;const int MAXN=20;const int inf=190000000;int n,l;int st[MAXN],... 阅读全文
posted @ 2014-07-31 21:25 chenjunjie1994 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 给题意跪了。。。题目输入一个凸包上的点(没有凸包内部的点,要么是凸包顶点,要么是凸包边上的点),判断这个凸包是否稳定。所谓稳定就是判断能不能在原有凸包上加点,得到一个更大的凸包,并且这个凸包包含原有凸包上的所有点。这样,只需判断每条边是否有大于等于三点即可。注意,一条直线的凸包是NO#include... 阅读全文
posted @ 2014-07-31 21:20 chenjunjie1994 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 直接求凸包,输出即可。#include #include #include #include #include using namespace std;const int MAXN=100;int n,l;int st[MAXN],stop,cnt;int ans[MAXN];struct poin... 阅读全文
posted @ 2014-07-31 15:13 chenjunjie1994 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 求凸包,然后加上一个半径为L的圆周就好了。因为每到一个凸包的顶点时,需要保持最小间距为L,则多个顶点围起来会有360度。在输出时,不要把结果直接转化主INT,因为这个不是四舍五入。#include #include #include #include #include using namespace... 阅读全文
posted @ 2014-07-31 11:26 chenjunjie1994 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 这题是明显的TU包变形。使用卷包裹法可解,而且是必定可以经过所有点的。直观可知,当经过某点后,相当于把之前的点抹去,求剩下点的TU包,递归下去,也就能把点全部经过了。于是,只需把经过的点标记一下就可以了。#include #include #include #include #include usi... 阅读全文
posted @ 2014-07-30 22:44 chenjunjie1994 阅读(239) 评论(0) 推荐(0) 编辑
上一页 1 ··· 28 29 30 31 32 33 34 35 36 ··· 38 下一页