HDU5120 (容斥原理)
来源:互联网 发布:淘宝卖家怎么处理差评 编辑:程序博客网 时间:2024/05/17 07:13
题目大意:求两环的相交面积。
容斥原理,两个大圆面积之交集 - 两个大圆与另一个小圆面积之交集 + 两小圆面积之交集。直接拿模板。
#include<iostream>#include<math.h>#include<iomanip>using namespace std;const double pai=acos(-1.0);class Circle{public: double x,y,r; Circle(double x1,double Y1,double R):x(x1),y(Y1),r(R){} double intersection(Circle b) { double dis=sqrt( (x-b.x)*(x-b.x)+(y-b.y)*(y-b.y) ); if(dis>=r+b.r) return 0; double minr=r<b.r?r:b.r; double maxr=r>b.r?r:b.r; if(dis<=maxr-minr) return pai*minr*minr; double ang1=acos( (dis*dis+r*r-b.r*b.r)/(2*dis*r) ); double ang2=acos( (dis*dis+b.r*b.r-r*r)/(2*dis*b.r) ); double ans=0; ans-=dis*r*sin(ang1)*0.5*2; ans+=ang1/(pai*2)*pai*r*r*2+ang2/(pai*2)*pai*b.r*b.r*2; return ans; }};int main(){ int times; cin>>times; for(int time=1;time<=times;++time) { double r1,r2,x1,x2,y1,y2; cin>>r1>>r2>>x1>>y1>>x2>>y2; Circle a(x1,y1,r2); Circle A(x1,y1,r1); Circle B(x2,y2,r1); Circle b(x2,y2,r2); cout<<"Case #"<<time<<": "; cout<<fixed<<setprecision(6)<< A.intersection(B)-A.intersection(b)-B.intersection(a)+a.intersection(b)<<endl; }}
0 0
- HDU5120 (容斥原理)
- HDU5120(几何)
- hdu5120
- hdu1695 (容斥原理)
- hdu1695 (容斥原理)
- UESTC1720(容斥原理)
- 容斥原理(转载)
- hdu1796(容斥原理)
- 容斥原理(SOJ3082)
- HDU1695(容斥原理)
- hdu4135(容斥原理)
- hdu1796(容斥原理)
- 容斥原理(模板)
- hdu5514Frogs(容斥原理)
- 集合论(容斥原理)
- 容斥原理(翻译)
- 容斥原理(翻译)
- hdu1695(容斥原理)
- Java连接mysql中遇到的一些问题及解决方法
- 点击删除弹出确认框,’是‘异步提交,‘否’不删除,并弹出不提交原因
- 山东省第二届ACM大学生程序设计竞赛 Crack Mathmen 打表 模拟
- css3滤镜-色彩(Chroma)滤镜
- JAVA中引用本身占用内存空间的问题
- HDU5120 (容斥原理)
- N
- android 上下滑动重影
- 【leetcode】102. Binary Tree Level Order Traversal
- URAL 1091 Tmutarakan Exams (DP或容斥)
- O
- 使用getIdentifier()获取资源Id
- hdu 3466 Proud Merchants 01背包
- 手柄连接断开时, 后台运行的activity被重新加载