HDU-2017 多校训练赛6-1002-Mindis
来源:互联网 发布:齐次变换矩阵 含义 编辑:程序博客网 时间:2024/06/05 06:49
ACM模版
描述
题解
这个题官方题解是用反演搞的,但是我不是特别会,看到我 佐学姐
用 平面几何 + 代数方法
解的这个题感觉十分巧妙,也更加容易理解一些。
佐理慧’s blog,虽然学姐写的十分详细,但是我依然因为高中的数学知识都不知道丢哪儿了而看了好一会儿,数学这东西,说忘就忘啊。利用椭圆逼近获取最近距离即可。
代码
#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>using namespace std;typedef pair<double, double> point;const double eps = 1e-8;double r;point p1, p2;double get_dis(const point &P1, const point &P2){ double dx = P1.first - P2.first; double dy = P1.second - P2.second; return sqrt(dx * dx + dy * dy);}int main(){ int T; scanf("%d", &T); while (T--) { scanf("%lf", &r); scanf("%lf%lf", &p1.first, &p1.second); scanf("%lf%lf", &p2.first, &p2.second); double C = get_dis(p1, p2) / 2.0; double D = get_dis(point(0, 0), p1); if (D < eps) { printf("%.7f\n", r * 2.0); continue; } double d = sqrt(D * D - C * C); double a = C * r / D; double y = d * (a * a - C * C) / (C * C); if (y < r - d) { printf("%.7f\n", a * 2.0); continue; } printf("%.7f\n", sqrt(C * C + (r - d) * (r - d)) * 2.0); } return 0;}
阅读全文
1 0
- HDU-2017 多校训练赛6-1002-Mindis
- 2017 多校训练第六场 HDU 6097 Mindis
- HDU-2017 多校训练赛1-1002-Balala Power!
- HDU-2017 多校训练赛8-1002-Battlestation Operational
- HDU-2017 多校训练赛10-1002-Array Challenge
- HDU-2017 多校训练赛6-1003-Inversion
- HDU-2017 多校训练赛6-1008-Kirinriki
- HDU-2017 多校训练赛6-1011-Classes
- HDU-2017 多校训练赛6-补题
- HDU-2017 多校训练赛6-1007-GCDispower
- HDU-2017 多校训练赛6-1010-Gameia
- HDU-2017 多校训练赛1-1006-Function
- HDU-2017 多校训练赛1-补题
- HDU-2017 多校训练赛1-1003-Colorful Tree
- HDU-2017 多校训练赛2-1009-TrickGCD
- HDU-2017 多校训练赛2-1003-Maximum Sequence
- HDU-2017 多校训练赛2-1011-Regular polygon
- HDU-2017 多校训练赛2-补题
- 区间素数筛选 poj2689
- protobuf Message的序列化和反序列化string类型
- 深入理解回调函数的使用
- BZOJ
- 数据类型及大端和小端
- HDU-2017 多校训练赛6-1002-Mindis
- HDU-Hard challenge
- subplot操作实例python脚本源码
- HDU
- PHP实现SVN管理的一些总结
- 数据结构实验之排序七:选课名单
- 237. Delete Node in a Linked List(链表)
- SSH三大框架的工作原理及流程
- 学生信息管理系统—优化错误篇