2017 Multi-University Training Contest
来源:互联网 发布:基于代理模型的优化 编辑:程序博客网 时间:2024/05/29 16:44
http://acm.hdu.edu.cn/showproblem.php?pid=6097
题意:
有一个圆心在原点的圆,给定圆的半径,给定
思路:
考虑点在圆上的极端情况。做
代码:
#include<stdio.h>#include<math.h>const double eps = 1e-6;double dis(double x1,double y1,double x2,double y2){ return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));}int main(){ int T; double x1,y1,x2,y2,r; while(~scanf("%d",&T)){ while(T--){ scanf("%lf %lf %lf %lf %lf",&r,&x1,&y1,&x2,&y2); double op = dis(x1,y1,0,0); if(op <= eps){ printf("%.7lf\n",r * 2); continue; } double flag = r * r / (op * op); double x3 = x1 * flag; double y3 = y1 * flag; double x4 = x2 * flag; double y4 = y2 * flag; double mx = (x3 + x4) / 2; double my = (y3 + y4) / 2; if(dis(mx,my,0,0) <= r){ double ans = dis(x3,y3,x4,y4); printf("%.7lf\n",ans * op / r); }else{ double x = mx * r / dis(mx,my,0,0); double y = my * r / dis(mx,my,0,0); double ans = dis(x1,y1,x,y); printf("%.7lf\n",ans * 2.0); } } }}
阅读全文
0 0
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- #2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- 2017 Multi-University Training Contest
- javaWeb文档自动生成
- [NOIP2011][二分]聪明的质监员
- PAT 1067 试密码
- 为什么学习Markdown
- libjpeg-turbo的安装与使用
- 2017 Multi-University Training Contest
- Qt中的unicode转换
- HttpClient简单封装及使用
- 使用xhtmlrenderer把html转换为PDF后右侧内容不显示
- ALV动态列Demo
- 一周例会后的杂感
- 线性筛(同时得到欧拉函数和素数表)
- MyEclipse打包Maven项目 Run as 命令
- file文件下载操作【练习】