[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 - (const P &b)const{return (P){x-b.x,y-b.y};}
}a[N],c; P rotate(P t,int tmp){
double rt=1.0*tmp/180*pi;P ret;
ret.x=t.x*cos(rt)-t.y*sin(rt);
ret.y=t.x*sin(rt)+t.y*cos(rt);
return ret;
}
double len(P a){return sqrt(a.x*a.x+a.y*a.y);}
P getcentre(P A,P B,P C){
double a1=B.x-A.x,b1=B.y-A.y,c1=(a1*a1+b1*b1)/2;
double a2=C.x-A.x,b2=C.y-A.y,c2=(a2*a2+b2*b2)/2;
double d=a1*b2-b1*a2;P ret;
ret.x=A.x+(c1*b2-c2*b1)/d;
ret.y=A.y+(c2*a1-c1*a2)/d;
return ret;
}
void getcircle(){
random_shuffle(a+1,a+1+n);
c=a[1];r=0;
for(int i=1;i<=n;i++){
if(len(a[i]-c)<=r)continue;
c=a[i];r=0;
for(int j=1;j<i;j++){
if(len(a[j]-c)<=r)continue;
c.x=(a[i].x+a[j].x)/2;
c.y=(a[i].y+a[j].y)/2;
r=len(a[j]-c);
for(int k=1;k<j;k++){
if(len(a[k]-c)<=r)continue;
c=getcentre(a[i],a[j],a[k]);
r=len(a[i]-c);
}
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf%lf",&a[i].x,&a[i].y);
scanf("%d%d",&deg,&p);
for(int i=1;i<=n;i++)
a[i]=rotate(a[i],-deg),a[i].x/=p;
getcircle();printf("%.3lf\n",r);
return 0;
}

[LOJ 2190] 「SHOI2014」信号增幅仪的更多相关文章

  1. LOJ#2190. 「SHOI2014」信号增幅仪(最小圆覆盖)

    题面 传送门 题解 我连椭圆是个啥都不知道导致这么简单一道题我一点思路都没有-- 我们把坐标系旋转一下,让半长轴成为新的\(x\)轴,也就是说所有点都绕原点逆时针旋转\(360-a\)度,然后再把所有 ...

  2. Loj #2192. 「SHOI2014」概率充电器

    Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...

  3. BZOJ 3564: [SHOI2014]信号增幅仪 最小圆覆盖

    3564: [SHOI2014]信号增幅仪 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3564 Description 无线网络基站在 ...

  4. Loj #3096. 「SNOI2019」数论

    Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...

  5. Loj #3093. 「BJOI2019」光线

    Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...

  6. Loj #3089. 「BJOI2019」奥术神杖

    Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...

  7. Loj #2542. 「PKUWC2018」随机游走

    Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...

  8. Loj #3059. 「HNOI2019」序列

    Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k ...

  9. Loj #3056. 「HNOI2019」多边形

    Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开 ...

随机推荐

  1. 鸟哥的linux私房菜 - 第三章 主机规划与磁盘分区

    各硬件装置在linux中的文件名 在linux系统中,每个装置都被当成一个档案来对待. 常见的装置与其在linux中的档名: 磁盘分区 磁盘链接的方式与装置文件名的关系 个人计算机常见的磁盘接口有两种 ...

  2. CSS3咖啡制作全过程动画

    CSS3咖啡制作全过程动画是一款利用纯CSS3实现的咖啡制作全过程动画特效,从把咖啡豆导入杯子,到把咖啡煮好,整个动画还比较流畅. 源码:http://www.huiyi8.com/sc/8788.h ...

  3. BZOJ 1572 [Usaco2009 Open]工作安排Job:贪心 + 优先队列【先放再更新】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1572 题意: 有n个工作,每个工作有一个截止日期dead[i]和收益pay[i]. 完成一 ...

  4. python3 - 写一个生成双色球号码的一个程序,生成的号码写到文件里面

    写一个生成双色球号码的一个程序,生成的号码写到文件里面 # 中奖号码由6个红色球号码和1个蓝色球号码组成 # 篮球范围:01-16 # 红球范围:01-33 def swq(num): random. ...

  5. densenet tensorflow 中文汉字手写识别

    densenet 中文汉字手写识别,代码如下: import tensorflow as tf import os import random import math import tensorflo ...

  6. 改善C#程序的建议10:用Parallel简化Task

    在命名空间System.Threading.Tasks下,有一个静态类Parallel简化了在同步状态下的Task的操作.Parallel主要提供了3个有用的方法:For.ForEach.Invoke ...

  7. Java_图片处理_02_图片处理工具类库

    二.参考文档 1.Java图片处理工具类库

  8. julia

    版本还不成熟,等成熟了再完整的看看吧.

  9. ubuntu svn 常用命令

    1.svn svn update 更新 新增文件或文件夹并提交svn add "sss" test.py testw.pysvn add "dir" dir_p ...

  10. 变废为宝,用旧电脑自己DIY组建 NAS 服务器

    i17986 出品,必属佳作! 前言: 老外不喜欢升级硬件和软件,大家应该都知道.我昨天无意看到 FreeNAS 自述文件,这个系统可以让你使用旧的计算机硬件,于是我决定这么做.垃圾电脑你怎么能没有, ...