hdu 5120 圆和圆交面积模板
来源:互联网 发布:北京好的设计公司知乎 编辑:程序博客网 时间:2024/05/17 06:38
简单的集合题...关键是板子....
#include <iostream>
#include <cstdio>#include <cmath>
#include <cstring>
#include <algorithm>
#define repf(i,a,b) for(int i=(a);i<=(b);i++)
using namespace std;
typedef long long LL;
const double PI = 3.141592653;
/*struct Round
{
double x , y;
double r;
}r[4];
double dis ( Round a , Round b )
{
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
double solve ( Round a , Round b )
{
double d = dis(a,b);
if ( d >= a.r + b.r ) return 0;
if ( d <= fabs(a.r - b.r))
{
double r = a.r < b.r ? a.r : b.r;
return PI * r * r;
}
double ang1 = acos((a.r * a.r + d * d - b.r * b.r)/2. / a.r / d );
double ang2 = acos((b.r * b.r + d * d - a.r * a.r)/2. / b.r / d );
double ret = ang1 * a.r * a.r + ang2 * b.r * b.r - d * a.r * sin(ang1);
return ret;
}*/
struct circle
{
double x,y;
double r;
}r[4];
double solve (point a,point b)
{
double s,d,t,t1;
d=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
if(d>=a.r+b.r) s=0;
else if(d<=fabs(a.r-b.r)) s=min(acos(-1.0)*a.r*a.r,acos(-1.0)*b.r*b.r);
else
{
t=(a.r*a.r+d*d-b.r*b.r)/2.0/d;
t1=sqrt(a.r*a.r-t*t);
s=-d*t1+a.r*a.r*acos(t/a.r)+b.r*b.r*acos((d-t)/b.r);
}
return s;
}
int main ( )
{
int t;
double rr,R,x1,y1,x2,y2;
scanf ( "%d" , &t );
int c = 1;
while ( t-- )
{
scanf ( "%lf%lf" , &rr , &R );
scanf ( "%lf%lf" , &x1 , &y1 );
scanf ( "%lf%lf" , &x2 , &y2 );
r[1].r = r[3].r = rr;
r[2].r = r[4].r = R;
r[1].x = r[2].x = x1;
r[1].y = r[2].y = y1;
r[3].x = r[4].x = x2;
r[3].y = r[4].y = y2;
double ans = solve ( r[2] , r[4] );
ans -= solve ( r[1] , r[4] );
ans -= solve ( r[2] , r[3] );
ans += solve ( r[1] , r[3] );
printf ( "Case #%d: " , c++ );
printf ( "%.6f\n" , ans );
}
}
0 0
- hdu 5120 圆和圆交面积模板
- HDU 3982 (半平面交 多边形和圆面积交)
- 多圆面积交模板
- HDU 5120 Intersection(圆的面积交)
- hdu 5120 Intersection (圆面积交)
- poj 2546 圆和圆相交的面积交模板
- HDU 2892 (平面几何 圆和多边形面积交)
- HDU 5230 (计算几何 圆和多边形面积交)
- 模板-多边形与圆的面积交
- 多边形与圆面积交 模板
- HDU 3982 半平面交+圆与多边形面积交
- hdu 5120 Intersection (圆相交面积模板)
- 求圆和多边形的面积交
- hdu 3982 Harry Potter and J.K.Rowling(半平面交+求凸多边形和圆的面积交)
- HDOJ 5120 Intersection 两圆面积交
- 两圆求面积交模板
- HDU 5134 Highways (圆与多边形面积交)
- HDU 5858 Hard problem【两圆的面积交】
- Win7任务栏相关设置
- Android multipart form 提交测试
- 自主研发轻量级注入容器+asp.net ef
- 20150129学习总结
- postgreSql 判断表不存在而创建表
- hdu 5120 圆和圆交面积模板
- 忘记Ucenter创始人密码的最快速解决方法
- 在Excel中创建默认的工作簿工作表模板
- Largest Number
- 程序员必须知道的10大基础实用算法及其讲解
- RMAN-06208: to mismatched status. Use CROSSCHECK command to fix status- 未完待续
- sqlserver 删除所有表和视图对象sql
- stl内存池学习(一)——内存池初认识
- skia编译在windows下编译教程