栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

K11942 雷达安装

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

K11942 雷达安装

4. K11942 雷达安装

题目描述

假设海岸线是一个无限长的直线,陆地位于海岸线的一侧,另一侧是海洋。每个小岛可以看做是海洋中的一个点。在海岸线上安装的任何一个雷达能够覆盖的距离是d,所以如果小岛距离雷达的最大距离是d那么这个小岛就能够被雷达信号覆盖到。

我们使用笛卡尔坐标系,把海岸线看做是X轴,海洋在X轴的上方,陆地在X轴的下方,给出每个小岛在海洋中的位置,并给出雷达的覆盖范围,你的任务是编写程序计算出,如果覆盖所有的小岛至少需要安装多少个雷达。小岛的位置是用x、y坐标表示的。

输入格式

输入包含多组测试数据。对于每组测试数据:

第一行是两个整数n(1≤n≤1000)和d,分别表示小岛的数量n和雷达的覆盖范围d。

接下来n行,每行两个整数,分别表示每个小岛的位置的坐标。

每组测试用例之间用一个空行隔开,当输入为“0 0”时,表示输入结束

输出格式

对于每组测试用例,先输出测试用例的编号,然后输出需要安装的雷达的数量,如果无解输出-1 

样例:

输入样例:

3 2

1 2

-3 1

2 1

1 2

0 2

0 0

输出样例:

Case 1: 2

Case 2: 1

答案:
#include
using namespace std;
double R;
int ans,n,d;
struct st{
	double l,r;
}s[1005];
double cmp(const st &x,const st &y){return x.r>n>>d&&n!=0&&d!=0&&++sum){
		int u=0;
		for(int i=1;i<=n;i++){
			int x,y;
			cin>>x>>y;
			int x1=y;
			if(x1<0) x1=-x1;
			if(x1>d)    {u=1;break;}
			s[i].l=x-sqrt(d*d-y*y);
			s[i].r=x+sqrt(d*d-y*y);
		}
		if(u!=0) 
		{cout<<"Case "<s[i].l)continue;
			R=s[i].r,ans++;
		}
		cout<<"Case "< 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号