摘要:
POJ_3525 这个题目限制了是一个凸多边形,于是多边形所在的范围就等价于各个边所在的直线划分成的半平面的交,如果是凹多边形的话显然就不能这样等价了。 首先,我们可以把问题转化为求凸多边形的半径最大的内切圆,同时,我们会发现,如果各个边向内收缩r的话,内切圆的半径就会减少r,当缩到半平面交恰好不存在时,内切圆的半径也就为0了,这时向内收缩的距离r自然就是内切圆的最大半径了。 于是我们只要二分内切圆的半径r作为各条边向内收缩的距离,然后判断这时半平面交是否为空集即可,如果为空则说明向内收缩的过头了,于是就要更新max,否则就更新min。 值得一提的是,当半平面交恰好不存在时(或者说恰好存... 阅读全文
摘要:
POJ_1474 对于半平面交的一些简明扼要的介绍可以参考这篇博客:http://blog.csdn.net/accry/article/details/6070621。此外,这篇博客上介绍的还有我敲出的程序都只是比较好理解的O(n^2)的求半平面交的算法,对于O(nlogn)的算法可以参考朱泽园的论文。 由于这个题目指明了多边形上的点是按顺时针序给出的,因而就不用再将每组数据都其统一成某个顺序了。 POJ上这个题目INF不宜开太大,开太大比如0x3f3f3f3f会WA,但在ZOJ就没事,计算几何的精度问题太玄妙了,所以只好自己把握尺度啦。#include<stdio.h>#inc 阅读全文
摘要:
POJ_3130 对于半平面交的一些简明扼要的介绍可以参考这篇博客:http://blog.csdn.net/accry/article/details/6070621。此外,这篇博客上介绍的还有我敲出的程序都只是比较好理解的O(n^2)的求半平面交的算法,对于O(nlogn)的算法可以参考朱泽园的论文。 由于这个题目指明了多边形上的点是按逆时针序给出的,因而就不用再将每组数据都其统一成某个顺序了。#include<stdio.h>#include<string.h>#define MAXD 110#define zero 1e-8#define INF 100000s 阅读全文
摘要:
POJ_3335 这个题目是我写的第一个半平面交的题目,之前总以为半平面交是个很高深的东西,但实际上真正去接触它时才发现它其实也并不复杂,搞ACM的过程中很多时候都是这样,因为自己的畏怯而不敢去接触一类新的算法、题目,算是又跨过了一个小门槛,继续努力啦! 对于半平面交的一些简明扼要的介绍可以参考这篇博客:http://blog.csdn.net/accry/article/details/6070621。此外,这篇博客上介绍的还有我敲出的程序都只是比较好理解的O(n^2)的求半平面交的算法,对于O(nlogn)的算法可以参考朱泽园的论文。#include<stdio.h>#incl 阅读全文