题意:
给出平面上n个点和一个角度α,一个比值p;
求一个长轴与x轴夹角为α,长轴与短轴比值为p的椭圆,
包含了这n个点,且使半短轴最小;
题解:
本来只是上bz找找计算几何凸包啥的裸题刷刷,结果怎么碰上这么一个玄学的玩意。。。
况且这题还不用凸包;
看起来只是将圆拓展到了椭圆,但是直接按原模型乱搞似乎有些难度;
判断点和椭圆的关系需要一部转化;
两点间求椭圆,甚至三...
分类:
其他好文 时间:
2015-07-30 19:30:06
阅读次数:
100
给出一堆点,求一个面积(半径)最小的圆,使得所有点都在它的内部或边界上.随机增量法是这样的....先随机打乱点的顺序......然后,我们假设已经得到了点 $1,2,...,i$ 的最小覆盖圆,我们要求出点 $1,2,...,i,i+1$ 的最小覆盖圆.怎么做? 考虑点 $i+1$ ,分两种情况:1...
分类:
其他好文 时间:
2015-06-11 16:26:49
阅读次数:
148
最小圆覆盖有个东西叫作随机增量法,具体可以baidu这里来说说怎么求三点共圆这其实就是求两条线段的交点在编程中,我们解方程是比较麻烦的一个比较好的方法是利用相似三角形设线段AB,CD交P,则PC:PD=Sabc:Sabd然后用定比分点就可以求的交点坐标了 1 const eps=1e-6; 2 3....
分类:
其他好文 时间:
2015-06-04 22:14:21
阅读次数:
139
题目大意:给定n个点,要求分成m段,使每段最小覆盖圆半径的最大值最小
二分答案,然后验证的时候把点一个个塞进最小覆盖圆中,若半径超了就分成一块……
等等你在跟我说不随机化的随机增量法?
好吧
那么对于一个点pos,我们要计算最大的bound满足[pos,bound]区间内的最小覆盖圆半径不超过二分的值
直接上二分是不可取的,因为我们要求m次,如果每次都验证一遍[1,n/2]直接就炸了
...
分类:
其他好文 时间:
2015-04-17 22:22:01
阅读次数:
226
题目大意:求最小圆覆盖
随机增量法裸题
注意多输出几位小数不然过不去= =
#include
#include
#include
#include
#include
#include
#define M 100100
#define EPS 1e-7
using namespace std;
struct Point{
double x,y;
Point() {}
Poin...
分类:
其他好文 时间:
2015-04-17 18:25:22
阅读次数:
160
题目大意:求最小圆覆盖
我又写了一遍233
尼玛上一遍居然忘记random_shuffle了= =
#include
#include
#include
#include
#include
#include
#define M 100100
#define EPS 1e-7
using namespace std;
struct Point{
double x,y;
Poin...
分类:
其他好文 时间:
2015-04-17 18:21:00
阅读次数:
142
题目链接:BZOJ - 3564题目分析求最小椭圆覆盖,题目给定了椭圆的长轴与 x 轴正方向的夹角,给定了椭圆长轴与短轴的比值。那么先将所有点旋转一个角度,使椭圆长轴与 x 轴平行,再将所有点的 x 坐标除以长轴与短轴的比值,然后就直接做最小圆覆盖了。随机增量法,一定别忘了 random_shuff...
分类:
其他好文 时间:
2015-04-15 16:54:57
阅读次数:
170
随机增量法求最小圆覆盖~
(三倍经验题。。)...
分类:
其他好文 时间:
2015-04-04 09:15:32
阅读次数:
170
题目大意:没看。反正就是求最小圆覆盖。
思路:一个神奇的算法——随机增量法。可以证明,这个算法可以在O(n)的时间复杂度内求出最小圆覆盖。虽然好像能卡掉的样子,但是加上一句random_shuffle就卡不掉了。
具体的过程是这样的:
在全局记录一个圆,表示目前的最小圆覆盖。从头开始扫描。遇到第一个不在当前最小圆覆盖内的点的时候:
将这个点与当前最小圆覆盖的圆心为直径做一个圆,作为...
分类:
其他好文 时间:
2015-02-26 11:48:11
阅读次数:
135