[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. BZOJ(begin) 1328 [Usaco2003 Open]Jumping Cows:贪心【波峰波谷模型】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1328 题意: 给你一个长度为n的正整数序列. 可以选任意个数字,只能从左往右选. 偶数 ...

  2. js(11)

    style对象的相关案例 <!DOCTYPE html> <html> <head> <title>MyHtml.html</title> ...

  3. Centos6.4 相关配置记录

    1.手动开启eth0网卡 在虚拟机里装完CentOS6.4之后,使用NAT模式,输入ifconfig发现没有IP地址,查找了一下资料,原来是: 在CentOS 6.x的版本中,默认网卡是不开启的,需要 ...

  4. python做图笔记

    1. 工具选择 了解了基本python,rodeo,anaconda套件这三种工具. (1)基本python,下载安装python的最新版(目前是python3.7).注意要使用安装版.安装好后,一般 ...

  5. leetcode 191 Number of 1 Bits(位运算)

    Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also know ...

  6. java面试题09

    A卷 1.选择题 public class Test01 { public static void changeStr(String str) { str = "welcome"; ...

  7. 【Lintcode】074.First Bad Version

    题目: The code base version is an integer start from 1 to n. One day, someone committed a bad version ...

  8. visualVM远程监控JVM

    对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/b ...

  9. 【转】Pro Android学习笔记(七):了解Content Provider(下上)

    我们通过一个Content Provider小例子进行详细说明.数据源是一个SQLite数据库,名字为books.db,该数据库只含有一个表格,名字为books.表格中含有name,isbn,auth ...

  10. js css3实现钟表效果

    原理: 利用transform-origin改变旋转的圆心,实现秒数和分钟数的刻度线,利用transfrom translate实现钟表小时刻度的显示 html: <div class=&quo ...