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. python 通用字典方法

    版本1 方法 # 不传返回所有属性,传入props只返回传入的对应属性 def m_dict(obj, props=[]): result = {} target = obj else props f ...

  2. 《Linux命令行与shell脚本编程大全》23章24章

    第二十三章 使用其他shell bash shell是linux发行版中最广泛使用的shell.但是它并不是唯一的选择,还有其他的shell可以供你选择. 23.1 什么是dash shell 百度百 ...

  3. 第12月第8天 Retrofit.builder

    1. retrofit = new Retrofit.Builder() .client(okHttpClient) .addConverterFactory(GsonConverterFactory ...

  4. Servlet笔记10--Session

    Web编程中的Session: 代码示例: package com.bjpowernode.javaweb.servlet; import java.io.IOException; import ja ...

  5. Linux驱动中completion接口浅析(wait_for_complete例子,很好)

    completion是一种轻量级的机制,它允许一个线程告诉另一个线程工作已经完成.可以利用下面的宏静态创建completion:                          DECLARE_CO ...

  6. H2内嵌数据库使用步骤

    1.找到h2数据库的jar包 D:\repositories\com\h2database\h2\1.4.187\h2-1.4.187.jar 2.双击jar包,配置连接信息 Driver Class ...

  7. sublime text 3 使用简介

    2014年1月22日 09:47:50 2用了一段时间感觉不错,就是自带的高亮显示匹配标签或者代码块儿时有点儿不清楚,所以一直是sublime 开PHP,notepad++开html 现在想只用一个编 ...

  8. mysql索引 B+tree

    一.B+tree示意图 二.为什么要用索引 1.索引能极大减少存储引擎需要扫描的数据量:因为索引有序所以可以快速查找并且不用全表查找: 2.索引可以把随机IO变为顺序IO:因为B+tree在数据中保存 ...

  9. Java Map 接口

    Map接口中键和值一一映射. 可以通过键来获取值. 给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值. 当访问的值不存在的时候,方法就会抛出一个NoSuchEl ...

  10. 【转】ElasticSearch之定时删除数据

    有的时候我们在使用ES时,由于资源有限或业务需求,我们只想保存最近一段时间的数据,所以有如下脚本可以定时删除数据 delete_es_by_day.sh #!/bin/sh # example: in ...