HDU 6158 The Designer【计算几何+笛卡尔定理+韦达定理】
来源:互联网 发布:java导出excel表格方法 编辑:程序博客网 时间:2024/04/28 08:45
题目链接
题意:照着图一个个的摆n个小圆,求小圆的总面积。
首先很容易得到第一个圆的半径,然后用笛卡尔定理导出4个圆半径的关系。
笛卡尔定理:
若平面上四个半径为r1 、r2 、r3 、r4 的圆两两相切于不同点,则其半径满足以下结论:
(1)若四圆两两外切,则∑4i=11ri=2∑4i=11r2i 。
(2)若半径为r1 、r2 、r3 的圆内切于半径为r4的圆中,则(1r1+1r2+1r3+1r4)2=2∑4i=11r2i 。
推导出关系式后,以
另外,当圆的半径小于eps的时候直接break,否则会超时。
如果觉得我讲的不清楚的话可以看看这篇博客。
这题好像还有反演圆的做法,待日后补。
#include <bits/stdc++.h>using namespace std;const double pi=acos(-1.0);const double eps=1e-8;int T;double R1,R2;int N;double ans=0;double k1,k2,k3,k4,k5;int main(){ scanf("%d",&T); while (T--){ scanf("%lf %lf",&R1,&R2); scanf("%d",&N); if (R1<R2){ swap(R1,R2); } ans=0; k1=-1.0/R1,k2=1.0/R2; k3=1.0/(R1-R2); ans+=1.0/(k3*k3); k4=k1+k2+k3; for (int i=2;i<=N;i++){ ans+=1.0/(k4*k4); if ((1.0/k4)<eps) break; if (i<=N-1){ ans+=1.0/(k4*k4); i++; } k5=2*(k1+k2+k4)-k3; k3=k4; k4=k5; } ans*=pi; printf("%.5f\n",ans); }}
阅读全文
0 0
- HDU 6158 The Designer【计算几何+笛卡尔定理+韦达定理】
- HDU 6158 The Designer(笛卡尔定理+韦达定理)
- HDU 6158 计算几何 笛卡尔定理 + 韦达定理
- HDU 6158 (计算几何+笛卡尔定理+韦达定理)
- HDU 6158 The Designer(笛卡尔定理)
- HDU 6158 The Designer 笛卡尔定理+韦达定理 2017ccpc网络赛
- hdu 6158 The Designer && 计蒜客 Finding the Radius for an Inserted Circle 笛卡尔定理应用+韦达定理
- hdu 6158 The Designer && 计蒜客 Finding the Radius for an Inserted Circle 笛卡尔定理应用
- CodeForces-77E(计算几何+笛卡尔定理)
- 计算几何之Pick定理
- hdu 6158 The Designer 计算几何之圆反演 2017中国大学生程序设计竞赛
- HDU 2092 韦达定理
- hust训练-计算几何之 pick定理
- uva 11178 morley定理(计算几何基础)
- 计算几何 欧拉定理应用
- LA-3263-计算几何,欧拉定理
- Finding the Radius for an Inserted Circle 笛卡尔定理
- HDU - 3775(几何+Pick定理+好题)
- 洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)
- [Python][小知识] Python字符串前 加 u、r、b 的含义
- JAVA学习52_ Java 如何删除文本文件指定的行?
- tensorflow
- linux-vim
- HDU 6158 The Designer【计算几何+笛卡尔定理+韦达定理】
- 面向对象知识点总结
- JQ对象和DOM对象的转换
- 【类欧几里得学习小记】
- 【Java】统计字符串中各字符数量
- USACO 黄金莲花池 BFS
- 机器学习笔记——偏差(bias)和方差(variance)及其与K折交叉验证的关系
- CodeForces
- 如何在Linux下编译安装OpenCV