2010-2011 ACM-ICPC, NEERC, Moscow Subregional Contest Problem A. Alien Visit 计算几何
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 计算几何的更多相关文章
- 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 ...
- 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 ...
- 2016-2017 ACM-ICPC, NEERC, Moscow Subregional Contest Problem L. Lazy Coordinator
题目来源:http://codeforces.com/group/aUVPeyEnI2/contest/229511 时间限制:1s 空间限制:512MB 题目大意: 给定一个n 随后跟着2n行输入 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- PHP 文件加密Zend Guard Loader 学习和使用(如何安装ioncube扩展对PHP代码加密)
一.大体流程图 二.PHP 项目文件加密 下表列出了Zend产品中的PHP版本及其内部API版本和Zend产品版本. 如何加密请往后看 三.如何使用 第一步:确认当前环境 Amai Phalcon 前 ...
- FFmpeg编码扩展之————编码库的扩展(libfdk-aac)
ffmpeg windows版没有libfdk-acc 请求该地址下载:http://tmod.nmm-hd.org/FFmpeg/
- 20155218 2006-2007-2 《Java程序设计》第5周学习总结
20155218 2006-2007-2 <Java程序设计>第5周学习总结 教材学习内容总结 java中的错误都会被包装成对象,且是可抛出的. 通常称错误处理为异常处理,程序设计本身的错 ...
- iOS 提交应用过程出现的错误及#解决方案#images can't contain alpha channels or transparencies
本文永久地址为http://www.cnblogs.com/ChenYilong/p/3977542.html ,转载请注明出处. 当你试图通过<预览>"导出&qu ...
- jmeter的环境配置
工具/原料 WIN7 Jmeter安装包 JDK 一.安装JDK 1 [步骤一]安装jdk 1.下载jdk,到官网下载jdk,地址:http://www.oracle.com/technetw ...
- list 复制
a=[1,2,3] b=a #b值改变,a也会改变 b[0]=90 print(a) [90,2,3] b=list(a) #这样修改b,a的值就不会改变
- /etc/sysconfig/network-scripts/下文件介绍
我们先查看一下 [root@tpwb network-scripts]# ls ifcfg-eth0 ifdown-ipv6 ifup-aliases ifup-plip ifup ...
- (三)发布Dubbo服务
我们现在来学习下发布Dubbo服务,主要参考dubbo开发包里的demo源码:由浅入深的讲解下这个小demo: github地址:https://github.com/apache/incubator ...
- vuex 的使用
用于多组件共享状态,如果不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的.确实是如此——如果应用够简单,您最好不要使用 Vuex.可使用简单Bus总线的方式来管理共享的数据详见(http:// ...
- CentOS 7命令行安装图形界面(GNOME、KDE等)
CentOS 7 默认是没有图形化界面的,但我们很多人在习惯了 Windows 的图形化界面之后,总是希望有一个图形化界面从而方便我们使用,这里介绍一下 CentOS7安装图形化桌面系统的方法. 一. ...