暑期个人赛--第一场--C
来源:互联网 发布:手机耳机话筒检测软件 编辑:程序博客网 时间:2024/05/17 07:24
C. 学姐的学弟 2014新生暑假个人排位赛01
时间限制 1000 ms 内存限制 65536 KB
题目描述
学姐正在写作业,但是她写着写着就开始想学弟,走神的她就开始在纸上画圈圈。这时学弟突然出现了,好奇的学弟问学姐在做什么,惊慌之下,学姐随口说想算一下这些圆覆盖的面积为多少。学弟顿时非常仰慕学姐,但是学姐突然意识到自己不会做,为了自己能给学弟留下好印象,她来求助你帮她算出来这些圆覆盖的面积。
为了简化问题,我们假设所有圆的半径都为1。
输入格式
输入有多组数据。开头为一个整数
输出格式
输出一个数,表示面积并,精确到小数点后五位。
输入样例
121 12 1
输出样例
5.05482
赛中提交:NULL
赛后ac:Y
题目大意:画很多单位圆,求最后这些圆覆盖的面积
思路:
可以建立一个网格坐标,而这些圆重叠部分的情况只有两种,
对边重叠和对角重叠,
也就对应了网格的四种状态,全覆盖,对边覆盖,对角覆盖,四分之一π
一下是AC代码:
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#include<stack>#define Pi 3.141592654#define maxn 100100using namespace std;typedef pair<int,int> P;double siz[200][200],ep1,ep2;int N;bool used[200][200];P A[150];double res;int dx[4]={0,1,0,1},dy[4]={0,0,1,1};void solve(){ int i,j,k; res=0; int dX[4]={-1,0,-1,0},dY[4]={-1,-1,0,0};/* for(i=0;i<4;i++)printf("%d ",dX[i]); printf("\n");*/ res=0; for(i=0;i<N;i++){ for(j=0;j<4;j++){ int x=A[i].first+dx[j]; int y=A[i].second+dy[j]; if(siz[x][y]<1e-7){ if((used[x][y]&&used[x-1][y-1])||(used[x-1][y]&&used[x][y-1])){ siz[x][y]=1; } else{ int flag=0; for(k=0;k<4;k++){ if(used[x+dX[k]][y+dY[k]]){ flag++; } } if(flag==1)siz[x][y]=ep2; else{ siz[x][y]=ep1; } } res+=siz[x][y]; } } }}int main(){ int i,j,T; ep2=Pi/4; ep1=Pi/6+sqrt(3)/4; scanf("%d",&T); while(T--){ memset(siz,0,sizeof(siz)); memset(used,0,sizeof(used)); scanf("%d",&N); for(i=0;i<N;i++){ scanf("%d %d",&A[i].first,&A[i].second); used[A[i].first][A[i].second]=true; } solve(); printf("%.5lf\n",res); } return 0;}
0 0
- 暑期个人赛--第一场--C
- 暑期个人赛第一场
- 暑期个人赛--第一场--E
- 暑期个人赛--第一场--A -
- 暑期个人赛--第一场--B
- 暑期个人赛--第一场--D
- 暑期个人赛--第三场--C
- 暑期个人赛--第四场--C
- 暑期个人赛--第五场--C
- 暑期个人赛--第二场--C
- 暑期个人赛--第七场--C
- 中石油 暑期集训个人赛第一场 题解
- 暑期个人赛第二场
- 暑期个人赛--第六场--C(待A)
- 暑期个人赛--第八场--C(自己坑自己~!!!!)
- 暑期个人赛--第九场--C(字符串 朴素查找)
- 暑期个人赛--第三场--B
- 暑期个人赛--第三场--A
- 求逆序对 --- 归并排序水题
- HDOJ 1234 开门人和关门人
- getRequestDispatcher()与sendRedirect()的区别
- 列表、集合与数组之间的转化
- 再封裝
- 暑期个人赛--第一场--C
- Duanxx的HEVC学习(二) HEVC测试代码环境搭建
- 人体暴露在太空中会爆炸?——谣言粉碎机
- 黑马程序员_类加载器
- 写给我们这些浮躁 不安的程序员
- STL#2
- spark学习十 yarn环境的搭建以及spark程序测试
- scrapy-redis实现scrapy分布式爬取分析
- 杭电 1018 Big Number