luogu P1325 雷达安装

题目描述

描述:

假设海岸线是一条无限延伸的直线。它的一侧是陆地,另一侧是海洋。每一座小岛是在海面上的一个点。雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d。你的任务是建立尽量少的雷达站,使所有小岛都在扫描范围之内。

数据使用笛卡尔坐标系,定义海岸线为x轴。在x轴上方为海洋,下方为陆地。

样例1如图所示

输入输出格式

输入格式:

第一行包括2个整数n和d,n是岛屿数目,d是雷达扫描范围。

接下来n行为岛屿坐标。

输出格式:

一个整数表示最少需要的雷达数目,若不可能覆盖所有岛屿,输出“-1”。

输入输出样例

输入样例#1:

3 2
1 2
-3 1
2 1

输出样例#1:

2

贪心,把问题转化成岛屿覆盖的区域必须有雷达,之后类似于活动安排问题

#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;

#define N 1005
int n,d;
struct island{
    int x;int y;
}is[N];
struct miku{
    double l,r;
    bool operator < (const miku & a)const{
        return r < a.r;
    }
}cd[N];
double calc(double x)
{
    return sqrt(1.0*d*d-x*x);
}
bool vis[N];
int main()
{
    cin>>n>>d;
    for(int i=1;i<=n;i++)
    {
        cin>>is[i].x>>is[i].y;
        if(is[i].y>d||d<0){cout<<"-1"<<endl;return 0;}
    }
    for(int i=1;i<=n;i++)
    {
        double len=calc(is[i].y);
        cd[i].l=is[i].x-len;
        cd[i].r=is[i].x+len;
    }
    sort(cd+1,cd+n+1);
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        if(!vis[i])
        {
            vis[i]=1;
            for(int j=1;j<=n;j++)
            {
                if(!vis[j] && cd[j].l<=cd[i].r)
                vis[j]=1;
            }
            ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}
时间: 2024-10-13 09:39:46

luogu P1325 雷达安装的相关文章

2625 雷达安装

2625 雷达安装 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 假定海岸线是一条无限延伸的直线,陆地在海岸线的一边,大海在另一侧.海中有许多岛屿,每一个小岛我们可以认为是一个点.现在要在海岸线上安装雷达,雷达的覆盖范围是d,也就是说大海中一个小岛能被安装的雷达覆盖,那么它们之间的距离最大为d. 我们使用平面直角坐标系,定义海岸线是x轴,大海在x轴上方,陆地在下方.给你海中每一个岛屿的坐标位置(x,y)和要安装的雷达所覆盖的范围

Poj 1328(雷达安装)几何+贪心

[题目描述]: 给定n个小岛以及这些小岛的位置,并输入雷达的辐射面积,问最少需要多少个雷达站才能覆盖所有小岛? [思路分析]: 本题首先想到的是运用贪心算法,但是算法想到了如何贪心?这道题我自己开始做之时只有一点思路,就是让每一个雷达覆盖较多的点,但是如何较多覆盖,这就是典型的数学问题了,自己没有思索出来,最后在网上看了题解才明白如何做.下面我们看看如何建图: 我们通过这个图首先运用了一个数学知识,就是以小岛为圆心,雷达辐射范围为圆心建立一个圆,该圆与x轴有一个交点,以该交点作为雷达站铺设点那么

POJ 1328 Radar Installation 雷达安装 贪心问题求解

题目链接: POJ 1328 Radar Installation Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coas

[树形DP][背包]luogu P2515 软件安装

https://www.luogu.org/problemnew/show/P2515 分析 沙雕题*2 这题就是随便做个树形背包,Tarjan缩点把价值和体积加起来而已 注意必须保留当前节点的价值和体积 #include <iostream> #include <cstdio> #include <memory.h> using namespace std; const int N=110; const int M=510; struct Graph { int u,

毫米波/激光/超声波雷达的区别

转自:http://www.sohu.com/a/201826967_524185 不知何时,自动驾驶技术从电影中跳出来,直接被拉到人们视野中.不过,去年特斯拉却因为几起自动驾驶事故,官网不得不把自动驾驶字眼改为辅助驾驶.本期<汽车总动员>讨论的不是自动驾驶,而是被称为自动驾驶汽车“眼睛”的雷达. 目前主流的“眼睛”有四类——毫米波雷达.激光雷达.超声波雷达.摄像头.他们各自都有自己的特点,比如摄像头的优点就很突出:精度高,距离远,直观方便:可是缺点也同样突出:受到天气的影响太大.倘若雾霾一来

第10章 智能交通

10.1智能交通概述 10.1.1传统交通与智能交通   10.1.2智能交通的定义 智能交通在世界各地迅速推进,已成为现代交通的重要标志,然而,对于这个专用名词,国际上至今没有一个明确的定义.在美.欧.日的ITS推进组织的网页或有关资料中,我们看到分别有如下的叙述. “美国智能运输协会”(ITS America网址为型:i!望:Q蟹):ITS是由一些技术组成的,这些技术包括信息处理.通信.控制和电子技术.交通事故.拥挤使我们为生活.为损失的 生产率和浪费的能源付出了昂贵的代价.ITS可以通过新

[SinGuLaRiTy] 贪心题目复习

[SinGuLaRiTy-1024] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [POJ 2709] 颜料 (Painter) 题目描述 杂货店出售一种由N(3<=N<=12)种不同颜色的颜料,每种一瓶(50ML),组成的颜料套装.你现在需要使用这N种颜料:不但如此,你还需要一定数量的灰色颜料.杂货店从来不出售灰色颜料——也就是它不属于这N种之一.幸运的是,灰色颜料是比较好配置的,如果你取出三种不同颜色的颜料各x ml,混合起来就

基于SLAMWARE方案的机器人底盘传感器选型及安装指南

机器人底盘作为控制机器人运动和定位导航的重要组成部分,在机器人身上充当着桥梁枢纽的作用.思岚科技基于SLAMWARE自主定位导航算法,融合多传感器数据,灵活的规划机器人行走路线. 机器人底盘各传感器能否正确选型及安装,关系到定位导航工作能否正常进行.本次将为大家分享基于SLAMWARE解决方案的机器人底盘常用传感器选型及安装,主要包括激光雷达,超声波传感器,碰撞传感器,防跌落传感器以及深度摄像头等传感器.激光雷达 利用激光雷达传感器,时刻扫描周围环境,提供地图数据,构建精度高达5cm的地图,并基

贪心策略 题解(合集)

背包问题[DP] 有一个背包,背包容量是M=150kg.有7个物品,物品不可以分割成任意大小.要求尽可能让装入背包中的物品总价值最大,但不能超过总容量. 01背包 f[j]=max(f[j],f[j-w[i]]+c[i]); 搬书[DP] 陈老师桌上的书有三堆,每一堆都有厚厚的一叠,你想逗一下陈老师,于是你设计一个最累的方式给他,让他把书拿下来给同学们.若告诉你这三堆分别有i,j,k本书,以及每堆从下到上书的质量,每次取书只能从任一堆的最上面取,显然,每次取书陈老师的体力消耗都会加大,这里用体力