HDU5120(几何)
来源:互联网 发布:死亡天使蘑菇 淘宝 编辑:程序博客网 时间:2024/05/17 01:10
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5120
题意:求两圆环相交面积,模板题。
#include<cstdio>#include<cmath>#include<algorithm>using namespace std;const double eps = 1e-8;const double pi = acos(-1.0);int sgn(double x){ if(fabs(x) <= eps) return 0; return x > 0 ? 1 : -1;}struct node{ double x,y;};double dis(node a,node b){ return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));}double Area(node p1,double r1,node p2,double r2){ double d = dis(p1,p2); if(sgn(r1 + r2 - d < 0)) return 0; if(sgn(d - fabs(r1 - r2)) <= 0) { double r = min(r1,r2); return pi*r*r; } double x = (d*d + r1*r1 - r2*r2)/(2*d); double t1 = acos(x/r1); double t2 = acos((d - x)/r2); return r1*r1*t1 + r2*r2*t2 - d*r1*sin(t1);}int main(){ int T,cas=1; scanf("%d",&T); while(T--) { double r,R; scanf("%lf %lf",&r,&R); node p1,p2; scanf("%lf %lf",&p1.x,&p1.y); scanf("%lf %lf",&p2.x,&p2.y); double s1 = Area(p1,R,p2,R); double s2 = Area(p1,r,p2,r); double s3 = Area(p1,R,p2,r); printf("Case #%d: %.6lf\n",cas++,s1+s2-2*s3); } return 0;}
0 0
- HDU5120(几何)
- hdu5120
- HDU5120 (容斥原理)
- HDU5120:Intersection(圆环相交)
- hdu5120(相交环面积)
- HDU5120(平面几何)
- hdu5120——Intersection
- HDU5120 Intersection(求 圆交)
- hdu5120 两圆环相交 数学题
- HDU5120 Intersection 【求圆的面积交】
- hdu5120 Intersection(平面几何+圆相交面积)
- HDU5120 Intersection(求两圆环相交)
- 计算几何 - 二维几何基础 (模板)
- poj3304Segments+计算几何(二维几何模板)
- 计算几何-常用几何函数(模板)
- POJ2318(计算几何)
- hdu 4667(几何)
- FZUoj2035(几何)
- 面向对象的简单计算器C#语言版
- Python进阶【第一篇】socket
- [从零开始unity3D]“五子连珠”游戏实现,网格数组的创建(1)
- UVA11100 The Trip, 2007(贪心)
- Java学习笔记之线程
- HDU5120(几何)
- jQuery 之 (二)事件操作、jq对文档的操作、属性选择器使用
- Python简易图片批量压缩程序
- 强悍的javascript手势库
- [2016ICPC 大连网络预选赛] HDU5874 构造
- C++ getline
- C# RichTextBox 滚动条 滚动到最后一行
- 单例模式之个人笔记(一)
- 装饰者模式笔记