hdu6158(圆的反演)
hdu6158
题意
初始有两个圆,按照标号去放圆,问放完 \(n\) 个圆后的总面积。
分析
圆的反演的应用。
参考blog
设反演圆心为 \(O\) 和反演半径 \(R\)
圆的反演的定义:
已知一圆 \(C\) ,圆心为 \(O\) ,半径为 \(R\) ,如果 \(P\) 与 \(P'\)在过圆心 \(O\) 的直线上且 \(OP \cdot OP'=R^2\),则称 \(P\) 与 \(P'\) 关于 \(O\) 互为反演点。
有圆的反演的几个性质:
- 经过\(O\)的圆,反演后成为不经过\(O\)的一条直线
- 不经过\(O\)的圆,反演后成为另一个圆,且圆心并不对应
- 不经过\(O\)的直线反演后成为一个经过\(O\)的圆
- 过 \(O\)的直线反演后不变
以 \((-4, 0)\) 为反演圆心,选取某一半径。( 上图数据并不准确,只是大致反应图形间的关系 )
那么将要填充的所有圆反演之后就变成了两条直线间具有相同半径的小圆,其中左边的直线为外面的大圆反演而来,右边的直线为里面的大圆反演而来。
小圆的圆心与反演圆心的连线在小圆上的交点,再反演一次得到两个点,它们之间的距离就是原来圆的直径。
code
#include<bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
inline double Sqr(double x) { return x * x; }
int main() {
int T;
cin >> T;
while(T--) {
double r1, r2;
int n;
cin >> r1 >> r2 >> n;
if(r1 < r2) swap(r1, r2); // r1:大 r2:小
double x = (1.0 / r2 / 2.0 + 1.0 / r1 / 2.0) / 2.0;
double r = (1.0 / r2 / 2.0 - 1.0 / r1 / 2.0) / 2.0;
double ans = PI * (r1 - r2) * (r1 - r2);
double h = 2 * r;
for(int i = 1; i <= n / 2; i++) {
double d = hypot(x, h);
double res = PI * Sqr((1.0 / (d - r) - 1.0 / (d + r)) / 2.0);
ans += res;
if(i * 2 < n) ans += res;
h += 2.0 * r;
if(res * (n - 2 * i) < 1e-6) break;
}
printf("%.5f\n", ans);
}
return 0;
}
hdu6158(圆的反演)的更多相关文章
- 「HDU6158」 The Designer(圆的反演)
题目链接多校8-1009 HDU - 6158 The Designer 题意 T(<=1200)组,如图在半径R1.R2相内切的圆的差集位置依次绘制1,2,3,到n号圆,求面积之和(n< ...
- 圆的反演变换(HDU4773)
题意:给出两个相离的圆O1,O2和圆外一点P,求构造这样的圆:同时与两个圆相外切,且经过点P,输出圆的圆心和半径 分析:画图很容易看出这样的圆要么存在一个,要么存在两个:此题直接解方程是不容易的,先看 ...
- 【 HDU4773 】Problem of Apollonius (圆的反演)
BUPT2017 wintertraining(15) #5G HDU - 4773 - 2013 Asia Hangzhou Regional Contest problem D 题意 给定两个相离 ...
- The Designer (笛卡尔定理+韦达定理 || 圆的反演)
Nowadays, little haha got a problem from his teacher.His teacher wants to design a big logo for the ...
- Pick定理、欧拉公式和圆的反演
Pick定理.欧拉公式和圆的反演 Tags:高级算法 Pick定理 内容 定点都是整点的多边形,内部整点数为\(innod\),边界整点数\(ednod\),\(S=innod+\frac{ednod ...
- HOJ 13102 Super Shuttle (圆的反演变换)
HOJ 13102 Super Shuttle 链接:http://49.123.82.55/online/?action=problem&type=show&id=13102 题意: ...
- CF77E Martian Food(圆的反演or 笛卡尔定理+韦达定理)
题面 传送门 这题有两种方法(然而两种我都想不到) 方法一 前置芝士 笛卡尔定理 我们定义一个圆的曲率为\(k=\pm {1\over r}\),其中\(r\)是圆的半径 若在平面上有两两相切,且六个 ...
- 2017多校第6场 HDU 6097 Mindis 计算几何,圆的反演
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6097 题意:有一个圆心在原点的圆,给定圆的半径,给定P.Q两点坐标(PO=QO,P.Q不在圆外),取圆 ...
- HDU-4773 Problem of Apollonius (圆的反演)
参考: https://oi-wiki.org/geometry/inverse/ https://blog.csdn.net/acdreamers/article/details/16966369 ...
随机推荐
- 洛谷 P1251 餐巾计划问题
题目链接 最小费用最大流. 每天拆成两个点,早上和晚上: 晚上可以获得\(r_i\)条脏毛巾,从源点连一条容量为\(r_i\),费用为0的边. 早上要供应\(r_i\)条毛巾,连向汇点一条容量为\(r ...
- [CF45G]Prime Problem
题目大意:将$1$到$n(1<n\leqslant6000)$分成若干组数,要求每组数的和均为质数,若存在一种分配方式,输出每个数所在的组的编号,有多组解输出任意一组解,若不存在,输出$-1$ ...
- jsp电子商务 购物车实现之三 购物车
CartServlet参考代码 : public void doPost(HttpServletRequest req, HttpServletResponse resp) throws Servle ...
- git使用笔记(三)文件忽略
By francis_hao Nov 19,2016 注:此条所有内容均来自$ git help gitignore,细节请参考之 有时候在仓库里有一些文件我们并不想提交,git提供了指定屏 ...
- [CVPR2018]Learning to Adapt Structured Output Space for Semantic Segmentation
学习适应结构化输出空间进行语义分割 在语义分割场景中,虽然物体在外表上不同,但是他们的输出是结构化且共享很多例如空间分布, 局部内容等信息.所以作者提出了multi-level的输出空间adaptat ...
- JavaScript中cookie使用
转自:http://www.cnblogs.com/yjzhu/archive/2012/11/26/2789032.html 一.什么是 cookie? cookie 就是页面用来保存信息,比如自动 ...
- 调整文本输入框placeholder的颜色等样式
input::-webkit-input-placeholder{ color: white !important;}input:-moz-placeholder{ color: whi ...
- POJ 2456 Aggressive cows---二分搜索法
///3.最大化最小值 /** POJ 2456 Aggressive cows Q:一排牛舍有N (2 <= N <= 100,000) 个,位置为x1,...,xN (0 <= ...
- 知问前端——工具提示UI
工具提示(tooltip),是一个非常实用的UI.它彻底扩展了HTML中的title属性,让提示更加丰富,更加可控制,全面提升了用户体验. 调用tooltip()方法 在调用tooltip()方法之前 ...
- 【洛谷 P1653】 猴子 (并查集)
题目链接 没删除调试输出,原地炸裂,\(80\)->\(0\).如果你要问剩下的\(20\)呢?答:数组开小了. 这题正向删边判连通性是很不好做的,因为我们并不会并查集的逆操作.于是可以考虑把断 ...