BZOJ3564 信号增幅仪】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=3564 思路:先旋转坐标系,再缩进x坐标,把椭圆变成圆,然后做最小圆覆盖. 还有,为什么用srand()又错了啊... #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> ); ; struct Point{ double…
3564: [SHOI2014]信号增幅仪 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3564 Description 无线网络基站在理想状况下有效信号覆盖范围是个圆形.而无线基站的功耗与圆的半径的平方成正比. 现给出平面上若干网络用户的位置,请你选择一个合适的位置建设无线基站.... 就在你拿起键盘准备开始敲代码的时候,你的好朋友发明家 SHTSC 突然出现了.SHTSC 刚刚完成了他的新发明--无线信号增幅仪.增幅仪能够在不增…
[LOJ 2190] 「SHOI2014」信号增幅仪 链接 链接 题解 坐标系直到 \(x\) 轴与椭圆长轴平行 点的坐标变换用旋转公式就可以了 因为是椭圆,所以所有点横坐标除以 \(p\) 然后最小圆覆盖 代码 #include<bits/stdc++.h> #define N 50005 using namespace std; int n,deg,p;double r; const double pi=acos(-1); struct P{ double x,y; P operator…
题目描述: 无线网络基站在理想状况下有效信号覆盖范围是个圆形.而无线基站的功耗与圆的半径的平方成正比. 现给出平面上若干网络用户的位置,请你选择一个合适的位置建设无线基站.... 就在你拿起键盘准备开始敲代码的时候,你的好朋友发明家 SHTSC 突然出现了.SHTSC 刚刚完成了他的新发明——无线信号增幅仪.增幅仪能够在不增加无线基站功耗的前提下,使得有效信号的覆盖范围在某一特定方向上伸长若干倍.即:使用了增幅仪的无线基站覆盖范围是个椭圆,其功耗正比于半短轴长的平方.现给出平面上若干网络用户的位…
bzoj3564 洛谷P4288 可以旋转一下坐标轴使得x轴与长轴方向对齐,然后将所有的横坐标变为自身除以放大倍数,然后就做一个最小圆覆盖 #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<cmath> #include<ctime> using namespace std; #define fi first #define…
先把所有点绕原点逆时针旋转(360-a)度,再把所有点横坐标除以放大倍数p,最后用随机增量法求最小圆覆盖即可. 时间复杂度期望$O(n)$ #include<cstdio> #include<algorithm> #include<cmath> using namespace std; struct P{double x,y;}a[50005],o; inline double dis(P x,P y){return sqrt((x.x-y.x)*(x.x-y.x)+(…
传送门 省选考最小圆覆盖? 亦可赛艇(你们什么都没看见) 在大佬的引领下成功做了出来. 就是旋转坐标使椭圆的横轴跟xxx轴平行. 然后压缩横坐标使得其变成一个圆. 然后跑最小覆盖圆就可以了. 注意题目给的是角度233. 代码里有其他计算几何的板子. 代码: #include<bits/stdc++.h> #define db double #define N 50005 using namespace std; const double pi=acos(-1.0); struct pot{db…
最小覆盖圆算法.看着题解半蒙半抄的搞过去了… 主要参考以下http://blog.csdn.net/acdreamers/article/details/9406735http://blog.csdn.net/lthyxy/article/details/6661250http://blog.himdd.com/archives/2666 其中有一个求外心的过程是错的…害我调了好久…还把x和y搞反…可是就算是错的我居然过了80%的数据… 仍然几个疑问: (1)最小覆盖圆算法时间复杂度的证明 (2…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3564 题意:给出平面上n个点,画出一个椭圆,椭圆的长轴是短轴的p倍,且长轴的方向为x轴逆时针旋转a度.求这个椭圆短轴的最小值使得可以覆盖所以点. 思路:先将所有点顺时针旋转a,然后所有点的x缩为原来的1/p.然后就是最小圆覆盖. const int N=50005; struct point { double x,y; point(double _x=0,double _y=0) { x…
题目链接:BZOJ - 3564 题目分析 求最小椭圆覆盖,题目给定了椭圆的长轴与 x 轴正方向的夹角,给定了椭圆长轴与短轴的比值. 那么先将所有点旋转一个角度,使椭圆长轴与 x 轴平行,再将所有点的 x 坐标除以长轴与短轴的比值,然后就直接做最小圆覆盖了. 随机增量法,一定别忘了 random_shuffle . 代码 #include <iostream> #include <cstdlib> #include <cstring> #include <cstd…