Problem A. Alien Visit

题目连接:

http://codeforces.com/gym/100714

Description

Witness: “First, I saw only one UFO. It was shining with cold-blue light. Closer to the center of the

object, the light was pink. It hung over the field, then began to blink and move intermittently round. The

UFO was quite big. The second UFO came several minutes after the first. It had the same size as the first

one. It seemed that there was some kind of contact between them — they began to blink alternately.”

Circles of scorched barley were found in the field. The circles were of the same radius, and their centers

were lying on a straight line.

You were hired to investigate the damage caused to the farms of Elcino-Borisovo place by the visit of

aliens. In order to do this you are to calculate the total area of scorched barley.

Input

The first line of the input contains two integers n and r denoting number of circles and the radius of the

circles, respectively (1 ≤ n ≤ 1 000, 1 ≤ r ≤ 100). The next line contains n space separated integers

a1, a2, . . . , an — the shifts of circles’ centers relative to some origin (0 ≤ ai ≤ 5 000). All shifts are

guaranteed to be distinct.

Output

Output the only real number — the total area covered by these circles. The relative error of your answer

must not exceed 10−6

.

Sample Input

1 1

0

Sample Output

3.1415926536

Hint

题意

给你n个在x轴的圆,半径都是r,问你总共的面积是多少

题解:

就总的面积减去两两相交的面积就好了,咩。

代码

#include<bits/stdc++.h>
using namespace std;
//两圆公共面积:
// 必须保证相交
const double PI = acos(-1.0);
struct POINT
{
double x;
double y;
POINT(double a=0, double b=0) { x=a; y=b;} //constructor
};
double c2area(POINT A,double r1,POINT B,double r2){
double rx1=A.x,ry1=A.y,rx2=B.x,ry2=B.y;
double drma=sqrt((rx1-rx2)*(rx1-rx2)+(ry1-ry2)*(ry1-ry2));
double a1=acos((r1*r1+drma*drma-r2*r2)/(2.0*r1*drma));
double a2=acos((r2*r2+drma*drma-r1*r1)/(2.0*r2*drma));
double res=(a1*r1*r1+a2*r2*r2-r1*drma*sin(a1));
return res;
}
double dis(POINT A,POINT B){
return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
}
bool cmp(POINT A,POINT B){
if(A.x==B.x)return A.y<B.y;
return A.x<B.x;
}
POINT p[5005];
int main(){
int n;double r;
scanf("%d%lf",&n,&r);
for(int i=1;i<=n;i++){
scanf("%lf",&p[i].x);
p[i].y=0;
}
sort(p+1,p+1+n,cmp);
double ans = n*PI*r*r;
for(int i=1;i<n;i++){
if(2*r>dis(p[i],p[i+1])){
ans-=c2area(p[i],r,p[i+1],r);
}
}
printf("%.12f\n",ans);
}

2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem A. Alien Visit 计算几何的更多相关文章

  1. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem D. Distance 迪杰斯特拉

    Problem D. Distance 题目连接: http://codeforces.com/gym/100714 Description In a large city a cellular ne ...

  2. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem C. Contest 水题

    Problem C. Contest 题目连接: http://codeforces.com/gym/100714 Description The second round of the annual ...

  3. 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest Problem L. Lazy Coordinator

    题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229511 时间限制:1s 空间限制:512MB 题目大意: 给定一个n 随后跟着2n行输入 ...

  4. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem K. KMC Attacks 交互题 暴力

    Problem K. KMC Attacks 题目连接: http://codeforces.com/gym/100714 Description Warrant VI is a remote pla ...

  5. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem J. Joke 水题

    Problem J. Joke 题目连接: http://codeforces.com/gym/100714 Description The problem is to cut the largest ...

  6. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem I. Interest Targeting 模拟题

    Problem I. Interest Targeting 题目连接: http://codeforces.com/gym/100714 Description A unique display ad ...

  7. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem H. Hometask 水题

    Problem H. Hometask 题目连接: http://codeforces.com/gym/100714 Description Kolya is still trying to pass ...

  8. 2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem F. Finance 模拟题

    Problem F. Finance 题目连接: http://codeforces.com/gym/100714 Description The Big Boss Company (BBC) pri ...

  9. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何

    Problem C. Equivalent Cards 题目连接: http://www.codeforces.com/gym/100253 Description Jane is playing a ...

随机推荐

  1. html5 canvas文本处理

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. [USACO08DEC]Trick or Treat on the Farm 记忆化搜索

    这一题非常水,因为每个点的下一个目的地是唯一的,可以考虑对每一个还为访问过的点dfs直接找出所有的环,同时更新每一个点能去的点的数量(即答案). 我们dfs时找到环上已经遍历过的一个点,用当前的dfn ...

  3. (F. MST Unification)最小生成树

    题目链接:http://codeforces.com/contest/1108/problem/F 题目大意:给你n个点和m条边,然后让你进行一些操作使得这个图的最小生成树唯一,每次的操作是给某一条边 ...

  4. flask基础之Response响应对象(九)

    前言 Response对象负责对客户端的响应,每一个请求都会有一个Response对象,那么它在一个请求的声明周期内是怎么发挥作用的呢? Response对象 响应发生的位置 先回顾一下http请求的 ...

  5. 三、vue脚手架工具vue-cli的使用

    1.vue-cli构建 vue-cli工具构建:https://blog.csdn.net/u013182762/article/details/53021374 npm的镜像替换成淘宝 2.项目运行 ...

  6. Restful对于URL的简化

    REST是英文representational state transfer(表象性状态转变)或者表述性状态转移,它是web服务的一种架构风格.使用HTTP,URI,XML,JSON,HTML等广泛流 ...

  7. java实现xml格式与javabean之间的转换XmlUtil类

    XmlUtil类:不多说,直接撸代码: /** * java 转换成xml * @Title: toXml * @Description: TODO * @param obj 对象实例 * @retu ...

  8. CSS之外边距折叠

    外边距折叠 Collapsing margins,即外边距折叠,指的是毗邻的两个或多个外边距 (margin) 会合并成一个外边距. 其中所说的 margin 毗邻,可以归结为以下两点: 这两个或多个 ...

  9. java JVM指令2

    https://www.cnblogs.com/dreamroute/p/5089513.html 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推送 ...

  10. .NetCore 利用Jenkins在 Windows平台下打包发布Angular项目

    准备环境 安装Jenkins 首先装node,版本根据实际环境而定(node安装包中包含了npm) 安装一般都配置好了环境变量,检查下如果没有就配置下 Jenkins中安装NPM插件 GIt获取代码 ...