题目链接:

Intersection

Time Limit: 4000/4000 MS (Java/Others)    

Memory Limit: 512000/512000 K (Java/Others)

Problem Description
 
Matt is a big fan of logo design. Recently he falls in love with logo made up by rings. The following figures are some famous examples you may know.


A ring is a 2-D figure bounded by two circles sharing the common center. The radius for these circles are denoted by r and R (r < R). For more details, refer to the gray part in the illustration below.


Matt just designed a new logo consisting of two rings with the same size in the 2-D plane. For his interests, Matt would like to know the area of the intersection of these two rings.

 
Input
 
The first line contains only one integer T (T ≤ 105), which indicates the number of test cases. For each test case, the first line contains two integers r, R (0 ≤ r < R ≤ 10).

Each of the following two lines contains two integers xi, yi (0 ≤ xi, yi ≤ 20) indicating the coordinates of the center of each ring.

 
Output
 
For each test case, output a single line “Case #x: y”, where x is the case number (starting from 1) and y is the area of intersection rounded to 6 decimal places.
 
Sample Input
 
2
2 3
0 0
0 0
2 3
0 0
5 0
 
Sample Output
 
Case #1: 15.707963
Case #2: 2.250778
 
题意
 
求两个圆环相交的面积;
 
思路
 
ans=两个大圆的面积交+两个小圆的面积交-2*大圆与小圆的面积交;
 
AC代码
 
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=1e5+;
const LL mod=1e9+;
const double PI=acos(-1.0);
double fun(double x,double y,double fx,double fy,double r,double R)
{
double dis=sqrt((x-fx)*(x-fx)+(y-fy)*(y-fy));
//cout<<dis<<endl;
if(dis>=r+R)return ;
else if(dis<=R-r)
{
return PI*r*r;
}
else
{
double angle1,angle2,s1,s2,s3,s;
angle1=acos((r*r+dis*dis-R*R)/(*r*dis));
angle2=acos((R*R+dis*dis-r*r)/(*R*dis)); s1=angle1*r*r;s2=angle2*R*R;
s3=r*dis*sin(angle1);
s=s1+s2-s3;
return s;
}
}
int main()
{
int t;
scanf("%d",&t);
double r,R,x,y,fx,fy;
int cnt=;
while(t--)
{ scanf("%lf%lf",&r,&R);
scanf("%lf%lf%lf%lf",&x,&y,&fx,&fy);
double ans1,ans2,ans3,ans4;
ans1=fun(x,y,fx,fy,R,R);
ans2=fun(x,y,fx,fy,r,r);
ans3=fun(x,y,fx,fy,r,R);
ans4=fun(fx,fy,x,y,r,R);
printf("Case #%d: ",cnt++);
printf("%.6lf\n",ans1+ans2-ans3-ans4);
} }

hdu-5120 Intersection(计算几何)的更多相关文章

  1. HDU 5120 Intersection(2014北京赛区现场赛I题 计算几何)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5120 解题报告:给你两个完全相同的圆环,要你求这两个圆环相交的部分面积是多少? 题意看了好久没懂.圆环 ...

  2. 计算几何(容斥原理,圆交):HDU 5120 Intersection

    Matt is a big fan of logo design. Recently he falls in love with logo made up by rings. The followin ...

  3. hdu 5120 Intersection

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5120 A ring is a 2-D figure bounded by two circles sh ...

  4. hdu 5120 Intersection 圆环面积交

    Intersection Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5 ...

  5. hdu 5120 Intersection 两个圆的面积交

    Intersection Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) P ...

  6. hdu 5120 Intersection (圆环面积相交->圆面积相交)

    Problem Description Matt is a big fan of logo design. Recently he falls in love with logo made up by ...

  7. HDU 5120 Intersection(几何模板题)

    题意:给定两个圆环,求两个圆环相交的面积. 思路:由于圆心和半径不一样,分了好多种情况,后来发现只要把两个圆相交的函数写好之后就不需要那么复杂了.两个圆相交的面积的模板如下: double area_ ...

  8. HDU 5120 Intersection (圆的面积交)

    题意:给定两个圆环,求两个圆环的面积交. 析:很容易知道,圆环面积交就是,大圆与大圆面积交 - 大圆和小圆面积交 - 小圆和大圆面积交 + 小圆和小圆面积交. 代码如下: #pragma commen ...

  9. HDU 4998 Rotate (计算几何)

    HDU 4998 Rotate (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4998 Description Noting is more ...

  10. hdu 4643 GSM 计算几何 - 点线关系

    /* hdu 4643 GSM 计算几何 - 点线关系 N个城市,任意两个城市之间都有沿他们之间直线的铁路 M个基站 问从城市A到城市B需要切换几次基站 当从基站a切换到基站b时,切换的地点就是ab的 ...

随机推荐

  1. perl学习之精髓中的精髓

    1.是函数就有返回值: 比如:chomp函数,其可以除去换行符,但其也有返回值 chomp($xx) #这是去除xx的换行符 $yy=chomp($xx)  #这是看这次除去了几个换行符,也就是函数运 ...

  2. python虚拟环境使用

    Window 下创建python的虚拟环境 下载工具 pip install virtualenv 创建虚拟环境目录 # 注意此命令创建的虚拟环境目录是在当前目录下 virtualenv testen ...

  3. Redis对象的设计与实现

    一.Redis对象结构Redis中的每个对象都由一个redisObject结构表示: typedef struct redisObject { unsigned type;//类型 unsigned ...

  4. Influx kafka

    http://www.opscoder.info/kafka-influxdb.html

  5. HUNAN 11569 Just Another Knapsack Problem(AC自动机+dp)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11569&courseid=0 给出目标串,每个子串和 ...

  6. 《从零开始搭建游戏服务器》MySQL安装配置

    一.下载资源: 到MySQL官网下载免安装版的mysql包,或者直接点击此链接下载:mysql-5.7.19-winx64.zip 二.解压配置: 将上面下载的安装包解压到一个本地目录下,在得到的my ...

  7. Mac--安装kubernetes并运行echoserver

    安装minikube curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.15.0/minikube-darwi ...

  8. Mysql 性能优化20个原则(1)

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  9. weex 项目开发(三) weexpack + weex-ui

    github地址:weex-ui https://github.com/alibaba/weex-ui 官网: https://alibaba.github.io/weex-ui/#/cn/ 创建项目 ...

  10. MaterialImageLoading

    https://github.com/eltld/MaterialImageLoading