bzoj 4885: [Lydsy2017年5月月赛]长方体
Description
Input
Output
#include<bits/stdc++.h>
typedef double ld;
ld ans=;
void maxs(ld&a,ld b){if(a<b)a=b;}
const ld _0=1e-;
int T,n;
ld xm,ym,x[],y[],r[];
ld dis2(ld x,ld y){return x*x+y*y;}
ld dis(ld x,ld y){return sqrt(x*x+y*y);}
bool out(int w){
return x[w]+r[w]<||x[w]-r[w]>xm||y[w]+r[w]<||y[w]-r[w]>ym;
}
bool in(int w){
ld r2=r[w]*r[w];
return dis2(x[w],y[w])<r2&&dis2(x[w]-xm,y[w])<r2&&
dis2(x[w],y[w]-ym)<r2&&dis2(x[w]-xm,y[w]-ym)<r2;
}
struct ev{
ld x;
int a;
bool operator<(ev w)const{return x<w.x;}
}es[];
const ld pi=acos(-),_2pi=pi*;
ld fix(ld x){
while(x<)x+=_2pi;
while(x>=_2pi)x-=_2pi;
return x;
}
int s,ep;
void cal(ld a,ld b){
ld l=fix(a-b),r=fix(a+b);
if(l>r)++s;
es[ep++]=(ev){l-_0,};
es[ep++]=(ev){r+_0,-};
}
void f(ld a,ld b,ld c){
xm=a,ym=b;
x[]=-c,y[]=;
x[]=,y[]=-c;
x[]=a+c,y[]=-a;
x[]=-b,y[]=b+c;
ld L=,R=a+b+c,M;
while(R-L>1e-){
M=(L+R)/;
for(int i=;i<;++i)r[i]=M;
bool ed=,ed0=;
for(int i=;i<;++i){
if(out(i))continue;
ed0=;
if(in(i))break;
s=,ep=;
for(int j=;j<;++j)if(j!=i){
ld xd=x[j]-x[i],yd=y[j]-y[i];
ld d=dis(xd,yd);
if(r[j]+r[i]<d+_0)continue;
ld a=atan2(yd,xd),b=acos(d/(*r[i]));
cal(a,b);
}
if(x[i]-r[i]<)cal(pi,acos(x[i]/r[i]));
if(x[i]+r[i]>xm)cal(,acos((xm-x[i])/r[i]));
if(y[i]-r[i]<)cal(pi*1.5,acos(y[i]/r[i]));
if(y[i]+r[i]>ym)cal(pi*0.5,acos((ym-y[i])/r[i]));
if(!ep){ed=;goto o;}
std::sort(es,es+ep);
for(int j=;j<ep;++j)if(!(s+=es[j].a)){ed=;goto o;}
oo:;
}
if(!ed0)ed=;
o:;
if(ed)R=M;
else L=M;
}
maxs(ans,L);
}
int main(){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
f(a,b,c);f(b,c,a);f(c,a,b);
printf("%.10f",ans);
return ;
}
bzoj 4885: [Lydsy2017年5月月赛]长方体的更多相关文章
- bzoj 4836: [Lydsy2017年4月月赛]二元运算 -- 分治+FFT
4836: [Lydsy2017年4月月赛]二元运算 Time Limit: 8 Sec Memory Limit: 128 MB Description 定义二元运算 opt 满足 现在给定一 ...
- BZOJ 4881: [Lydsy2017年5月月赛]线段游戏
4881: [Lydsy2017年5月月赛]线段游戏 Time Limit: 3 Sec Memory Limit: 256 MBSubmit: 164 Solved: 81[Submit][St ...
- BZOJ 4883 [Lydsy2017年5月月赛]棋盘上的守卫(最小生成环套树森林)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4883 [题目大意] 在一个n*m的棋盘上要放置若干个守卫. 对于n行来说,每行必须恰好 ...
- BZOJ 4884 [Lydsy2017年5月月赛]太空猫(单调DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4884 [题目大意] 太空猫(SpaceCat)是一款画面精致.玩法有趣的休闲游戏, 你 ...
- 【BZOJ 4832 】 4832: [Lydsy2017年4月月赛]抵制克苏恩 (期望DP)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 275 Solved: 87 Descripti ...
- [补档][Lydsy2017年4月月赛]抵制克苏恩
[Lydsy2017年4月月赛]抵制克苏恩 题目 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平. 如果你不玩炉石传说,不必担心,小Q同学会告诉你所有相关的细节.炉石传说是这样的一 ...
- 【BZOJ4832】[Lydsy2017年4月月赛]抵制克苏恩 概率与期望
[BZOJ4832][Lydsy2017年4月月赛]抵制克苏恩 Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q同学会告诉 ...
- 【BZOJ4883】[Lydsy2017年5月月赛]棋盘上的守卫 KM算法
[BZOJ4883][Lydsy2017年5月月赛]棋盘上的守卫 Description 在一个n*m的棋盘上要放置若干个守卫.对于n行来说,每行必须恰好放置一个横向守卫:同理对于m列来说,每列 必须 ...
- [Bzoj4832][Lydsy2017年4月月赛]抵制克苏恩 (期望dp)
4832: [Lydsy2017年4月月赛]抵制克苏恩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 673 Solved: 261[Submit][ ...
随机推荐
- Google V8 引擎 原理详解
V8 引擎概览 V8 引擎简介 Google V8 引擎使用 C++ 代码编写,实现了 ECMAScript 规范的第五版,可以运行在所有的主流 操作系统中,甚至可以运行在移动终端 ( 基于 ARM ...
- POJ 2185 Milking Grid(KMP最小循环节)
http://poj.org/problem?id=2185 题意: 给出一个r行c列的字符矩阵,求最小的覆盖矩阵可以将原矩阵覆盖,覆盖矩阵不必全用完. 思路: 我对于字符串的最小循环节是这么理解的: ...
- windows下hadoop安装配置(转载)
Windows平台安装配置Hadoop 步骤: 1. JDK安装(不会的戳这) 2. 下载hadoop2.5.2.tar.gz,或者自行去百度下载. 3. 下载hadooponwindows-mast ...
- html 入门2-表
html 入门-列表 表格 表单 一.表标签 1,无序列表 ( ul:li ) 注意:代码排版必须要层次分明 2,有序列表 (ol:li) 3,自定义列表 (dl:li) 二.表格标签 1,tabl ...
- 为CentOS 7配置静态IP地址及遇到的问题解决策略
为CentOS 7配置静态IP地址及遇到的问题解决策略 1. 为CentOS 7配置静态IP地址的两种方法 (原文地址:http://www.linuxidc.com/Linux/2014-10/10 ...
- postman 安装桌面版
https://github.com/postmanlabs/postman-app-support
- php特级课---5、网络数据转发原理
php特级课---5.网络数据转发原理 一.总结 一句话总结: OSI七层模型 路由器 交换机 ARP 代理ARP 1.OSI7层模型? 电缆 MAC地址 ip 端口 应用 1层 通信电缆 2层 原M ...
- 递推-练习1--noi1760 菲波那契数列(2)
递推-练习1--noi1760 菲波那契数列(2) 一.心得 二.题目 1760:菲波那契数列(2) 总时间限制: 1000ms 内存限制: 65536kB 描述 菲波那契数列是指这样的数列: 数 ...
- 2018HN多校
http://acm.hi-54.com/contest_problemset.php?cid=1455 A : 摩斯密码 概览问题列表状态排名 Progress Bar 时间限制:1 Sec 内存限 ...
- EPANET头文件解读系列7——MEMPOOL.H
//EPANET应用程序使用了大量的节点与管段数据,而且每个对象数据又有不同时段的数据,这些数据占用了大量内存,而mempool.h就是一个简单快速的内存分配相关的头文件/*** mempool.h ...