计蒜客 腾讯手机地图
2016-04-24 15:19
260 查看
腾讯手机地图的定位功能用到了用户手机的多种信号,这其中有的信号的作用范围近,有的信号作用的范围则远一些。有的信号相对于用户在不同的方位强度是不同的,有的则是在任何一个方向上信号强度都一致的。
已知用户面向北方拿着自己的手机,在不同方位的各种信号覆盖区域可以被抽象成以用户为圆心的一系列扇形。已知每个扇形的半径 r,和每个扇形的两条边相对于正东方向的夹角度数。每个信号覆盖区域抽象出的扇形都可以通过从第一条边逆时针旋转到第二条边画出。
请计算一下,用户手机所有信号覆盖到的区域的总面积。
输入格式
第一行输入一个整数 T (1 ≤ T ≤ 20),表示数据组数。
接下来一共 T 组数据,每组数据第一行输入一个整数 n (1 ≤ n ≤ 104),表示各种信号可以抽象出的不同扇形的总个数。接下来输入 n 行,每行 3 个整数表示扇形半径 r (0 ≤ r ≤
105)、扇形第一条边与正东方向的夹角 α、扇形第二条边与正东方向的夹角 β (-90 ≤ α ≤ β < 270)。
输出格式
输出 T 行,每行一个非负浮点数,表示用户手机所有信号覆盖到的区域的范围的总面积。
每组输出与标准答案绝对误差在 10-3 内均认为是正确的。
输入:
输出:
对于这道题,因为度数是整数,所以将360°平分为1°,把每一度的半径记录下来。
已知用户面向北方拿着自己的手机,在不同方位的各种信号覆盖区域可以被抽象成以用户为圆心的一系列扇形。已知每个扇形的半径 r,和每个扇形的两条边相对于正东方向的夹角度数。每个信号覆盖区域抽象出的扇形都可以通过从第一条边逆时针旋转到第二条边画出。
请计算一下,用户手机所有信号覆盖到的区域的总面积。
输入格式
第一行输入一个整数 T (1 ≤ T ≤ 20),表示数据组数。
接下来一共 T 组数据,每组数据第一行输入一个整数 n (1 ≤ n ≤ 104),表示各种信号可以抽象出的不同扇形的总个数。接下来输入 n 行,每行 3 个整数表示扇形半径 r (0 ≤ r ≤
105)、扇形第一条边与正东方向的夹角 α、扇形第二条边与正东方向的夹角 β (-90 ≤ α ≤ β < 270)。
输出格式
输出 T 行,每行一个非负浮点数,表示用户手机所有信号覆盖到的区域的范围的总面积。
每组输出与标准答案绝对误差在 10-3 内均认为是正确的。
样例1
输入:1 4 2 -30 32 3 20 81 3 121 160 2 141 201
输出:
11.030
对于这道题,因为度数是整数,所以将360°平分为1°,把每一度的半径记录下来。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define pi 3.1415926535897932384626
using namespace std;
int a[363];
int main()
{
int t, n, i, j, x1, x2, r;
scanf("%d", &t);
while (t--)
{
memset(a, 0, sizeof(a));
scanf("%d", &n);
while (n--)
{
scanf("%d%d%d", &r, &x1, &x2);
if (x1*x2 >= 0)
{
if (x1 <= 0 && x2 <= 0) { x1 += 360, x2 += 360; }
for (j = x1;j < x2;j++) //记得是小于x2,很重要。我就莫名其妙因为他错了无数次
if (a[j] <= r) a[j] = r;
}
else
{
x1 += 360;
for (j = 0;j < x2;j++)
if (a[j] <= r) a[j] = r;
for (j = x1;j < 360;j++)
if (a[j] <= r) a[j] = r;
}
}
double sum = 0.0;
for (i = 0;i<360;i++)
{
sum += (1.0*pi*a[i] * a[i]) / 360;
}
printf("%.3lf\n", sum);
}
//system("pause");
return 0;
}
/*
1 4 2 -30 32 3 20 81 3 121 160 2 141 201*/
相关文章推荐
- mybatis 和 Hibernate对比
- Handler "BlockViewHandler" has a bad module "ManagedPipelineHandler" in its module list
- HDU 5670 Machine 水题
- mysql中profile的使用
- LintCode——岛屿的个数
- vs2010下MFC解决自动配置数据源函数SQLConfigDataSource第四个参数字符串问题
- php面向对象(OOP)编程完全教程
- 设计模式之结构型模式(待完成)
- python numpy中随机数生成包random
- 创业的第一百七十二天
- 条件变量
- Android中的contentProvider
- jdk-map-hashMap
- Rescue宽度搜索的最优解
- 集群资源共享的三种方式
- ORACLE 数据库体系结构
- js document.body.scrollTop的用法
- Linux进程与线程的区别
- 1004Toxophily
- Linux 命令的举例需求及解答步骤