随笔分类 -  ACM--计算几何

摘要:题意:给出空间两条线段,求距离。注意输出格式! 1 #include 2 #include 3 #include 4 using namespace std; 5 6 struct Point3 7 { 8 int x, y, z; 9 Point3(int x=... 阅读全文
posted @ 2015-10-22 23:49 yyblues 阅读(399) 评论(0) 推荐(0)
摘要:题意:三维空间中,给出两个三角形的左边,问是否相交。面积法判断点在三角形内: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define clc(... 阅读全文
posted @ 2015-10-21 23:48 yyblues 阅读(270) 评论(0) 推荐(0)
摘要:题意:有个矩形,左下角(0,0),左上角(L,W).思路:除了圆盘之外,本题的输入也是个PSLG,因此可以按照前面叙述的算法求出各个区域:只需把线段视为直线,用切割凸多边形的方法 :每次读入线段,切割所有块,最终得到若干凸多边形如何判断多边形是否与圆盘相交:如果多边形的边和圆周规范相交,圆盘和多边形... 阅读全文
posted @ 2015-10-20 22:58 yyblues 阅读(230) 评论(0) 推荐(0)
摘要:题意:一条封闭折线将平面分成了若干个区域,按顺序给出折线各点的坐标,要求输出封闭折线的轮廓。 题解:用类似卷包裹的算法,先确定一个一定会被选中的点(x坐标最小,y坐标最小)作为起点,然后把可能是下一个极点(凸包顶点)的点都存起来,下一个极点有可能是当前点所在线段的前一个点和后一个点或当前点所在线段和... 阅读全文
posted @ 2015-10-19 23:47 yyblues 阅读(310) 评论(0) 推荐(0)
摘要:题意:给定一些线段障碍,判断怪物能不能逃离到无穷远处。思路:从(0,0)点能否到无穷远处。用BFS搜索。那满足什么样的点符合要求,能加入到图中呢?遍历每个点,显然一开始已经在某些线段上的点要删去。再判断,两点之间的连线是否与其他线段有交。有则删去。这道题要注意如果两条线段重合,怎么办?延长每条线段,... 阅读全文
posted @ 2015-10-19 22:16 yyblues 阅读(286) 评论(0) 推荐(0)
摘要:题意:一个凸边型,目标在凸边型内且最优。问最多删除几个点使目标暴露在新凸边型外面。思路:二分+半平面相交。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct Point 8 {... 阅读全文
posted @ 2015-10-18 22:10 yyblues 阅读(270) 评论(0) 推荐(0)
摘要:题意:铁人三项赛,给定每个选手游泳,自行车,赛跑三个阶段的平均速度,不知道每段比赛的路程,询问当前这个选手能否胜利。思路:把题意转化为一个不等式,设比赛长度是1,如果i要战胜j,x、y分别是第一阶段和第二阶段的比赛长度: (x / ui + y / vi + (1-x-y) / wi) 0的形式,... 阅读全文
posted @ 2015-10-17 22:09 yyblues 阅读(218) 评论(0) 推荐(0)
摘要:题意:求一个凸多边形中一点到边的最大距离。思路:转换成在多边形内部,到每边距离为d的直线所围成的内多边形是否存在。也就是,二分距离+半平面交。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #in... 阅读全文
posted @ 2015-10-17 16:18 yyblues 阅读(206) 评论(0) 推荐(0)
摘要:题意:求所有正方形中两点距离最大值的平方值。思路:旋转卡壳法。分别用数组和vector存凸包时,旋转卡壳代码有所不同。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #in... 阅读全文
posted @ 2015-10-17 12:49 yyblues 阅读(220) 评论(0) 推荐(0)
摘要:题意:给定两个点集,一个红点集,另一个蓝点集,询问,能否找到一条直线能,使得任取一个红点和蓝点都在直线异侧。思路:划分成两个凸包,一个红包,一个蓝包。两个凸包不相交不重合。1.任取一个凸包中的点不在另一个凸包中。2.任取一个凸包中的边与另一个凸包不相交。 1 #include 2 #includ... 阅读全文
posted @ 2015-10-15 22:23 yyblues 阅读(192) 评论(0) 推荐(0)
摘要:题意:给出平面上的n个点,求一条直线,使得所有点在该直线的同一侧且所有点到该直线的距离和最小,输出该距离和。思路:要使所有点在该直线的同一侧,明显是直接利用凸包的边更优。所以枚举凸包的没条边,然后求距离和。直线一般式为Ax + By + C = 0.点(x0, y0)到直线的距离为 fabs(Ax0... 阅读全文
posted @ 2015-10-15 00:48 yyblues 阅读(222) 评论(0) 推荐(0)
摘要:大意:有n块矩形木板,你的任务是用一个面积尽量小的凸多边形把它们包起来,并计算出木板站整个包装面积的百分比。思路:按照题意将所有矩形顶点坐标存起来,旋转时先旋转从中心出发的向量,求得各个坐标之后,求凸包即可。水。。。。 1 #include 2 #include 3 #include 4 #... 阅读全文
posted @ 2015-10-14 23:20 yyblues 阅读(255) 评论(0) 推荐(0)
摘要:思路:小圆面是由小圆弧围成。那么找出每条小圆弧,如果小圆弧,在小圆弧中点上下左右进行微小位移的所得的点一定在一个小圆面内。 找到最后覆盖这个小点的圆一定是可见的。圆上的点按照相邻依次排序的关键量为极角(0,2PI) 用中心点代替圆弧本身是否被圆覆盖 1 #include 2 #include ... 阅读全文
posted @ 2015-10-13 00:46 yyblues 阅读(230) 评论(0) 推荐(0)
摘要:题意:要求解答6个关于圆的问题。 1.给出三角形坐标求外接圆 2.给出三角形坐标求内切圆 3.给出一个圆心和半径已知的圆,求过点(x,y)的所有和这个圆相切的直线 4.求所有和已知直线相切的过定点(x,y)的已知半径的圆的圆心 5.给出两个不平行的直线,求所有半径为r的同时和这两个直线相切的圆 6.... 阅读全文
posted @ 2015-10-11 21:08 yyblues 阅读(312) 评论(0) 推荐(0)
摘要:题意:给定两条狗的行走路线,一直两条狗同时出发同时到达,问路途中的最远和最近距离。思路:先简化版本,如果甲乙都仅沿着两条线段向前跑,那么他们之间的最短和最长距离怎么算? 假设甲的速度向量为v1(速度向量指甲单位时间所走的位移向量),乙的速度向量为v2. 因为运动是相对的,可以把甲看成是静止的,乙运动... 阅读全文
posted @ 2015-10-11 01:20 yyblues 阅读(266) 评论(0) 推荐(0)
摘要:题意:平面上有一个包含n个端点的一笔画,第n个端点总是和第一个端点重合,因此团史一条闭合曲线。组成一笔画的线段可以相交,但是不会部分重叠。求这些线段将平面分成多少部分(包括封闭区域和无限大区域)。分析:若是直接找出所有区域,或非常麻烦,而且容易出错。但用欧拉定理可以将问题进行转化,使解法变容易。欧拉... 阅读全文
posted @ 2015-10-10 23:14 yyblues 阅读(225) 评论(0) 推荐(0)
摘要:题意:根据A,B,C三点的位置确定D,E,F三个点的位置。贴模板 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define clc(a,b) m... 阅读全文
posted @ 2015-10-10 22:10 yyblues 阅读(175) 评论(0) 推荐(0)
摘要:题意:给你一百个点,找个以这些点为中心的最小的圆,使得这个圆恰好包含了n个点,而且这个圆的边界上并没有点解题思路:暴力枚举每个点,求出每个点到其他点的距离,取第n大的点,判断一下。 1 #include 2 #include 3 #include 4 #include 5 #include 6 us... 阅读全文
posted @ 2015-10-04 15:56 yyblues 阅读(252) 评论(0) 推荐(0)
摘要:题意:凸包周长+一个完整的圆周长。因为走一圈,经过拐点时,所形成的扇形的内角和是360度,故一个完整的圆。模板题,之前写的Graham模板不对,WR了很多发。。。。POJ上的AC代码 1 #include 2 #include 3 #include 4 #include 5 #include 6 #... 阅读全文
posted @ 2015-10-03 13:58 yyblues 阅读(164) 评论(0) 推荐(0)
摘要:题意:给定平面上的N个点,属性分别标记为0和1,然后找一条直线,直线上的点全部溶解,一侧的1溶解,另一侧的0溶解。求出最多能溶解的点的个数。思路:暴力枚举每个点,扫描线旋转。先做优化,如果一侧溶解0,则把属性为1的做关于当前枚举直线对称的点,这样统计一侧的点加上线上的点就是答案。O(n2). 1 #... 阅读全文
posted @ 2015-10-02 15:02 yyblues 阅读(258) 评论(0) 推荐(0)