hdu6097[二分+解析几何] 2017多校6
2024-09-29 22:38:23
/*hdu6097[二分+解析几何] 2017多校6*/
#include <bits/stdc++.h>
using namespace std;
const double eps=1e-;
struct node{
double x,y;
node(double X=0.0,double Y=0.0):
x(X),y(Y){}
}p,q;
double dist(node a,node b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int T;
double A,B,C,a,b,c,h,R;
bool check(){
a=sqrt(b*b+c*c);
A=c*c;
B=-2.0*a*a*h;
C=a*a*h*h-a*a*b*b+b*b*R*R;
double delta=B*B-4.0*A*C;
//cout<<"delta: "<<delta<<endl;
if(delta>=0.0){//判断复根
double yy1=0.5*(-B+sqrt(delta))/A;
double yy2=0.5*(-B-sqrt(delta))/A;
if(R*R-yy1*yy1>=0.0||R*R-yy2*yy2>=0.0)
return true;
else return false;
}
else return false;
}
void solve(){
double t1,t2;
t1=(p.x+q.x)*0.5;
t2=(p.y+q.y)*0.5;
h=dist(node(t1,t2),node());
c=0.5*dist(p,q);
double l=,r=R-h;
for(int i=;i<;i++){
b=(l+r)*0.5;
if(check()){
r=b;
}
else{
l=b;
}
}
b=(l+r)*0.5;
printf("%.8f\n",2.0*sqrt(b*b+c*c));
/*....*/
}
int main(){
//freopen("1002.in","r",stdin);
//freopen("out.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%lf",&R);
scanf("%lf%lf",&p.x,&p.y);
scanf("%lf%lf",&q.x,&q.y);
solve();
}
return ;
}
比赛的时候忘记判断复根了!! QAQ
最新文章
- Lesson 8 The best and the worst
- (原创)MongoDB之NoSQL简介
- Java 基础知识总结 (一、标识符)
- TestNG中用Parameters或DataProvider为测试方法传入参数
- UISegment属性
- android提示框
- uva 11417 - GCD
- Spring的DI(Ioc) - 注入集合类型
- 腾讯QQ表情为什么如此成功呢
- bootstrap-datepicker 日期拾取器
- 2014.3.12-C语言小测试
- hdu4171 Paper Route 树的性质+DFS
- C++ 值类型和引用类型传递示例
- 【原创】大叔问题定位分享(6)Dubbo monitor服务iowait高,负载高
- SpringMVC配置及使用
- TCP长连接和短连接的区别【转】
- 接口开发-集成数据库操作(mybatis)
- JavaScript 里面的整数 位 操作
- 很实用且容易忘记的小命令 for Linux(更新中...)
- numpy深入理解剖析
热门文章
- python爬虫之路——初识爬虫三大库,requests,lxml,beautiful.
- 贪心水题。UVA 11636 Hello World,LA 3602 DNA Consensus String,UVA 10970 Big Chocolate,UVA 10340 All in All,UVA 11039 Building Designing
- codeforce Gym 100342J 	Triatrip (bitset)
- cocos2dx for lua 摄像机移动
- [转载]matlab图像处理为什么要归一化和如何归一化
- (70)zabbix telnet监控类型
- Thinkphp5的安装
- 万门大学Python零基础10天进阶班视频教程
- CentOS 系统下Gitlab搭建与基本配置 以及代码备份迁移过程
- tempfs详解