[LOJ 2190] 「SHOI2014」信号增幅仪
[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",°,&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」信号增幅仪的更多相关文章
- LOJ#2190. 「SHOI2014」信号增幅仪(最小圆覆盖)
		题面 传送门 题解 我连椭圆是个啥都不知道导致这么简单一道题我一点思路都没有-- 我们把坐标系旋转一下,让半长轴成为新的\(x\)轴,也就是说所有点都绕原点逆时针旋转\(360-a\)度,然后再把所有 ... 
- Loj #2192. 「SHOI2014」概率充电器
		Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ... 
- BZOJ 3564: [SHOI2014]信号增幅仪 最小圆覆盖
		3564: [SHOI2014]信号增幅仪 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3564 Description 无线网络基站在 ... 
- Loj #3096. 「SNOI2019」数论
		Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ... 
- Loj #3093. 「BJOI2019」光线
		Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ... 
- Loj #3089. 「BJOI2019」奥术神杖
		Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ... 
- Loj #2542. 「PKUWC2018」随机游走
		Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ... 
- Loj #3059. 「HNOI2019」序列
		Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k ... 
- Loj #3056. 「HNOI2019」多边形
		Loj #3056. 「HNOI2019」多边形 小 R 与小 W 在玩游戏. 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3, \ldots , n\).最开 ... 
随机推荐
- BZOJ(begin) 1328 [Usaco2003 Open]Jumping Cows:贪心【波峰波谷模型】
			题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1328 题意: 给你一个长度为n的正整数序列. 可以选任意个数字,只能从左往右选. 偶数 ... 
- js(11)
			style对象的相关案例 <!DOCTYPE html> <html> <head> <title>MyHtml.html</title> ... 
- Centos6.4 相关配置记录
			1.手动开启eth0网卡 在虚拟机里装完CentOS6.4之后,使用NAT模式,输入ifconfig发现没有IP地址,查找了一下资料,原来是: 在CentOS 6.x的版本中,默认网卡是不开启的,需要 ... 
- python做图笔记
			1. 工具选择 了解了基本python,rodeo,anaconda套件这三种工具. (1)基本python,下载安装python的最新版(目前是python3.7).注意要使用安装版.安装好后,一般 ... 
- 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 ... 
- java面试题09
			A卷 1.选择题 public class Test01 { public static void changeStr(String str) { str = "welcome"; ... 
- 【Lintcode】074.First Bad Version
			题目: The code base version is an integer start from 1 to n. One day, someone committed a bad version ... 
- visualVM远程监控JVM
			对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/b ... 
- 【转】Pro Android学习笔记(七):了解Content Provider(下上)
			我们通过一个Content Provider小例子进行详细说明.数据源是一个SQLite数据库,名字为books.db,该数据库只含有一个表格,名字为books.表格中含有name,isbn,auth ... 
- js css3实现钟表效果
			原理: 利用transform-origin改变旋转的圆心,实现秒数和分钟数的刻度线,利用transfrom translate实现钟表小时刻度的显示 html: <div class=&quo ... 
