
计算几何
文章平均质量分 58
16bit戦争
这个作者很懒,什么都没留下…
展开
-
BZOJ 2965 保护古迹 平面图转对偶图+最小割
题目大意:给出一个平面图,这个平面图中分布着一些点,可以用平面图中的边将一些点围住,问围住k个点的最小花费是多少。思路:这题重点是平面图转对偶图。做法不难理解。先将所有的边拆成两条,枚举所有的边,若这个边没有被标记过,那么就对这条边进行搜索,弄出来以这个边为一边的平面区域,可以顺时针或者逆时针。将所有边挂在这条边的起点上,在所有点上按照每条边的极角排序,每次找的时候找大于(或小于)当前原创 2015-01-27 20:32:31 · 1591 阅读 · 1 评论 -
POJ 1981 Circle and Points 计算几何
题目大意给出平面上的一些点,求一个单位圆最多能够覆盖多少点。思路数据范围300,但是没有用,多组数据就是要卡O(n3)O(n^3),然而常数优化的比较好的话在POJ能过,但是BZ上还是过不了。我们需要寻找一种O(n2logn)O(n^2logn)的做法。 做法就是枚举每个点,做一个一这个点为圆心的单位圆。之后将所有在这个圆里的点弄出来,以这些点为圆心做单位圆,与开始的单位圆会产生一段圆弧,最后求哪原创 2015-04-08 15:30:32 · 1246 阅读 · 0 评论 -
BZOJ 1027 JSOI 2007 合金 计算几何+最小环
题目大意给出一个CPU处理事件的规则,给出一些事件,问处理这些事件的顺序和结束时间。思路我们只需要维护一个堆来模拟他说的规则,之后按顺序输出就行了。CODE#define _CRT_SECURE_NO_WARNINGS#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorith原创 2015-03-23 20:08:48 · 1213 阅读 · 0 评论 -
BZOJ 3707 圈地
题目大意给出平面上n个点,求最小面积三角形。思路暴力能过。。。 于是我只写了暴力。。。 后来看hzwer学长的博客发现了一个有趣的骗分。 将整个序列分块,块内暴力,这样就避免了太远的点之间的计算。 然后旋转几次坐标轴争取枚举到所有的情况。。CODE(暴力):#define _CRT_SECURE_NO_WARNINGS#include <cmath>#include <cstdio>#i原创 2015-03-26 11:07:49 · 993 阅读 · 0 评论 -
POJ 2079 Triangle 旋转卡壳
题目大意给出平面上的一些点,求这些点能够组成的最大面积三角形。思路虽然数据范围有50W,但是POJ上的数据一向很弱,discuss中居然有人这样说: 手动二分发现极限数据凸包上有2596个点 RT 好水的数据好吧,留给我们的就剩下O(n2)O(n^2)的时间内解决这个题了。 首先先求出凸包,之后可以枚举这个大三角形的一条边,然后枚举另一个顶点。很显然这个过程是O(n3)O(n^3原创 2015-03-05 14:29:27 · 792 阅读 · 0 评论 -
BZOJ 1199 HNOI 2005 汤姆的游戏 计算几何
题目大意给出若干个图形,这些图形中有些是矩形,剩下的是圆形。还有一些点,问每个点在多少个图形里面。思路题目没写数据范围,其实是25w。敢O(n^2)暴力么?没错这个题就是暴力。只需用二分处理一维坐标然后第二维暴力就行了。CODE#define _CRT_SECURE_NO_WARNINGS#include <cmath>#include <cstdio>#include <cstring>#i原创 2015-03-02 14:12:08 · 990 阅读 · 0 评论 -
HDU 3007 Buried memory 最小圆覆盖
题目大意:没看。反正就是求最小圆覆盖。思路:一个神奇的算法——随机增量法。可以证明,这个算法可以在O(n)的时间复杂度内求出最小圆覆盖。虽然好像能卡掉的样子,但是加上一句random_shuffle就卡不掉了。具体的过程是这样的:在全局记录一个圆,表示目前的最小圆覆盖。从头开始扫描。遇到第一个不在当前最小圆覆盖内的点的时候:将这个点与当前最小圆覆盖的圆心为直径做一个圆,作为原创 2015-02-26 10:05:55 · 1114 阅读 · 0 评论 -
JDFZOJ 1005 多边形面积 扫描线
题目大意:给出N个凸多边形,求这些多边形的面积并。思路:N只有不到10,乱搞就可以。还有一种更优的解法,似乎只需要O(n^2logn)的时间就可以解决。但是我并不会,想了解的参照:http://wyfcyx.is-programmer.com/posts/80378.html下面说乱搞的思路。由于都是凸多边形,那么任意一条垂直于x轴的直线在多边形内的区域一定是一条线段(或者什么都没原创 2015-02-26 09:59:23 · 1190 阅读 · 0 评论 -
BZOJ 1185 HNOI 2007 最小矩形覆盖 旋转卡壳
题目大意:给出平面上的一些点,问面积最小的矩形满足覆盖所有的点。思路:覆盖问题和不是凸包上的点没关系,先做凸包。根据贪心的思想,这个覆盖了所有点的矩形肯定至少有一条边与凸包上的边重合,那么我们枚举凸包上的每一条边,对于这个已经确定了一条边的矩形,不难确定其他三个边。注意到已知当前直线的向量,就可以求出两侧和对面的向量,而这三个向量随着枚举的边的移动是单调的,所以就可以用旋转卡壳来卡住剩原创 2015-01-23 17:52:28 · 969 阅读 · 0 评论 -
BZOJ 3564 SHOI 2014 信号增幅仪 坐标变换+最小圆覆盖
题目大意:给出平面上的一些点,现在让你用一个长轴与x轴成一定角度的,长轴:短轴已知的椭圆来覆盖所有的坐标,求最小的短轴长度。思路:很明显,这个椭圆的形状和放置状态已经给出了,但是没有办法求最小拖圆覆盖啊。采用坐标变换,将椭圆变成圆。首先我们先让长轴与x轴平行,将平面上的所有点都旋转这个角度。之后只需要让所有点的x坐标除以长轴:短轴就可以了。剩下的就是最小圆覆盖了。注:坐标旋转公式:原创 2015-02-26 11:09:41 · 1416 阅读 · 0 评论 -
BZOJ 1336 Balkan2002 Alien最小圆覆盖
题目大意:最小圆覆盖。思路:再拍一份模板。做法见:http://blog.youkuaiyun.com/jiangyuze831/article/details/43950601CODE:#define _CRT_SECURE_NO_WARNINGS#include #include #include #include #include #include #de原创 2015-02-26 10:28:20 · 983 阅读 · 0 评论 -
POJ 2187 Beauty Contest 旋转卡壳
题目大意:求平面最远点对。思路:我会说正解是求出凸包之后暴力?然后我闲的蛋疼去写了旋转卡壳。。还在写极角序扫描法的不要再写了。。。赶紧换水平序吧。。。因为极角序需要解决两个特别不科学的问题。问题1:第一次排序的时候极角相同的情况,这个时候要保留最外面的。问题2:在最后得到的凸包上有三点共线的情况。有的时候并不会影响答案,但是有的时候就会,比如说旋转卡壳的时候。我的解决方法是原创 2015-01-21 18:07:15 · 826 阅读 · 0 评论 -
BZOJ 1069 SCOI 2007 最大土地面积 凸包+旋转卡壳
题目大意:给出平面上的一些点,求其中四个点的最大四边形的面积。思路:简单yy一下发现这些点肯定都在凸包上,先求个凸包。然后直接暴力肯定是不行的,我们需要一个O(n^2)的做法,比较简单的想法是枚举最后要求的四边形的一条对线,那么这个四边形就被分割成了两个三角形,剩下两个点与这条线组成的三角形的面积和就是答案。按照旋转卡壳的思想不难发现,这两个点都是单调的。所以枚举对角线然后扫n圈就原创 2015-01-22 08:39:19 · 2294 阅读 · 0 评论 -
BZOJ 2458 BeiJing 2011 最小三角形 分治
题目大意:给出平面上一些点,问这些点组成的最小周长三角形的周长是多少。思路:与平面最近点对类似的思想,先按照x值排序,通过全局目前搜到的最优解来缩小分治之后需要暴力枚举的范围。具体来说,递归的终止条件是需要处理的点数小于一定数量,就在这些点中暴力枚举来更新答案。这个值经过测定,在这个题中20左右为最快的。具体怎么算我也不知道。。之后每处理一段区间,先递归处理左右区间来更新答案,弄出原创 2015-01-15 19:56:54 · 884 阅读 · 0 评论 -
POJ 3714 Raid 平面最近点对
题目大意:给出两个集合的点,问这两个集合之间最近的点对的距离是多少。思路:先要知道平面最近点对的分治算法,剩下的就简单了,只需要在更新答案的时候判断一下两个点是否属于两个集合就可以了。分治算法总是十分神奇的。对于平面最近点对,首先按照x坐标排序,然后递归进行分治,每次分治时,先获得分治得到的结果,然后按照这个结果来计算本区间。由于我们只需要计算答案小于这个结果的点对就行了,其中原创 2015-01-13 16:27:47 · 960 阅读 · 0 评论 -
BZOJ 1845 CQOI 2005 三角形面积并 扫描线
题目大意:给出一些三角形,求这些三角形面积的并。思路:应该可以辛普森积分,但是应该会很麻烦。。以前扫描线就写过矩形的用数据结构维护的那种,和计算几何不占边,这次才是好好写了一次正宗的扫描线。不得不说这个算法还是很靠谱的。其实这个思路不仅限于三角形面积的并,所有凸多边形的面积并应该都可以解决。对于任意由线段组成的图形,对这个图形进行多次的划分,总可以将这个图形划分成梯形,面积原创 2015-01-10 13:59:40 · 1449 阅读 · 0 评论 -
POJ 2069 Super Star 爬山
题目大意空间最小球覆盖思路临滚粗前做点水题qwqCODE#define _CRT_SECURE_NO_WARNINGS#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define INF 1e15#define EPS 1e-7#define MAX 1原创 2015-04-15 07:23:39 · 1424 阅读 · 0 评论