【E】雷达的设置
来源:互联网 发布:马拉多纳 数据 编辑:程序博客网 时间:2024/04/26 14:41
Description
为保卫我国领土,海岸线上要安装一些雷达监控岛屿。假设海岸线可视为一条直线,一边为大海,一边为大陆,岛屿可看作一个点,雷达监控的范围为一个半径为d的圆。为了方便表示,我们使用笛卡尔坐标系,令海岸线为X轴,X轴上方为大海,X轴下方为大陆,所有岛屿的位置都是由坐标给出。
Input
有多组测试数据,第一行给出岛屿的数目n(1<=n<=1000)和雷达监控范围d,接下来n行输入第i个岛屿的X坐标和Y坐标,当n和d都是零时结束。
Output
每组测试数据输出一行,要包括样例的编号,如果无法覆盖所有岛屿,输出-1。
Sample Input
2 5
-3 4
-6 3
4 5
-5 3
-3 5
2 3
3 3
0 0
Sample Output
Case 1: 1
Case 2: 2
答案:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct Node
{
int x;
int y;
}node[2000];
bool cmp(Node a,Node b)
{
return a.x<=b.x;
}
double Min(double x,double y)
{
return x-y>0?y:x;
}
int main()
{
int n=0,d=0,t=0;
int i,ans;
double ix1,ix2;
double k;
while(scanf("%d%d",&n,&d)!=EOF)
{
ans=1;
t++;
if(n==0&&d==0)
break;
for(i=0;i<n;i++)
{
scanf("%d%d",&node[i].x,&node[i].y);
if(abs(node[i].y)>d)
ans = -1;
}
printf("Case %d: ",t);
if(ans==-1)
{
printf("-1\n");
continue;
}
sort(node,node+n,cmp);
ix1 = node[0].x-sqrt(0.0+d*d-node[0].y*node[0].y);
ix2 = node[0].x+sqrt(0.0+d*d-node[0].y*node[0].y);
for(i=1;i<n;i++)
{
k = sqrt(0.0+d*d-node[i].y*node[i].y);
if(node[i].x - k <= ix2)
{
ix1 = node[i].x - k;
ix2 = Min(k+node[i].x,ix2);
}
else
{
ix1 = node[i].x-sqrt(0.0+d*d-node[i].y*node[i].y);
ix2 = node[i].x+sqrt(0.0+d*d-node[i].y*node[i].y);
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
- 【E】雷达的设置
- VB的雷达扫描
- 雷达界面的显示
- 雷达的波段
- cocos2dx 雷达的实现
- 雷达的波段
- 雷达遥感原理;侧视雷达成像系统;雷达回波强度的影响因素;雷达遥感及雷达图像的特征
- 雷达
- 网络安全软件FileAudit的E-mail设置
- 我的e家无线路由器设置
- 简述相控阵雷达的原理
- 最新的技术雷达趋势
- ThoughtWorks的读书雷达图
- 雷达覆盖岛屿的问题
- 自定义雷达扫描的实现
- 测试技术雷达的开篇
- 石家庄县(市)国省道雷达测速设置情况
- 无所不能 自动刹车的倒车雷达
- zoj 3690 Choosing number 递推+矩阵快速幂
- android EditText获取光标位置并插入删除字符与设置光标颜色
- Eclipse下安装Android开发环境:NDK和CDT
- Matrix
- vi技巧学习(简单汇总)
- 【E】雷达的设置
- 公司主管离职引发的思考
- win 7 下 apache+mysql+php环境搭建
- C++中MessageBox()的详细用法(转载)
- 整数划分
- java中创建自定义类加载器
- Linux Ubuntu11.10 python安装MySQLdb模块
- 奇怪的比赛(回溯)
- Tomcat 7的安装和配置步骤