首页 > 其他分享 >112. 雷达设备(贪心)

112. 雷达设备(贪心)

时间:2023-02-28 15:55:06浏览次数:47  
标签:opt cnt int 112 区间 雷达 贪心

https://www.acwing.com/problem/content/114/
典型区间贪心
题目要求寻找最少雷达摆放数,范围覆盖所有岛
读题后一开始想的是雷达放在x轴何处,但是这样直接想太难了,而且有关于圆的操作,不利于判断
于是转换角度(改变主体),从岛的角度看,雷达可以摆在x轴的那些地方,这样就变成区间了
即,我们不考虑每个雷达可以覆盖哪些小岛,而是每个小岛可以在哪些区间摆放雷达
对于每一个岛,雷达摆放在x轴上都有一个区间,只要不超过区间,就可以覆盖到岛

那么问题就转变为求给定若干区间,求最少需要多少点,可以满足所有区间都包含点

那么有n个岛,就有n个区间,将n个区间以右端点排序,区间之间有的有交集,有的没有
有交集的就说明在这个交集内,雷达可以覆盖这两个岛
贪心策略:
对于每个区间:
1.要是上一个点不在此区间范围内,就说明上一个区间和此区间没有交集,必然要用两个点去覆盖这两个区间,放右端点
2.要是上一个点在此区间范围内,说明这个区间以及被满足条件了,则跳到下一区间继续判断

严格证明:
这里利用通用的证明方式:cnt表示这个算法的结果,opt表示最佳解,我们的目标是证明cnt=opt.
通用的证明等于的方式,即要证明cnt>=opt且cnt<=opt
根据定义,显然有1.opt<=cnt,我们算法的解一定是大于等于最佳解的,这个式子一定成立
2.证明opt>=cnt,即等价于证明 所有可行解>=cnt (放缩,opt是所有解的子集)
根据我们的贪心策略,上一个点所在的区间必定是在现在区间的左端点左边,即两个区间不相交
若我们选了cnt个点:就说明存在cnt个不相交的区间
有cnt个互不相交的区间,因为要满足所有区间都要包含点,区间之间没有交集,无法共用一个点,于是我们的点数必定>=cnt,至少为cnt个
故得证,所有可行解必然>=cnt,故opt必然>=cnt
故证cnt=opt

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N = 1e3+10;
int n,d;
int x,y;
int cnt;
struct line
{
    double l,r;
}l[N];

bool cmp(line a,line b)
{
    return a.r<b.r;
}

int main()
{
    cin >> n >> d;
    for(int i=0;i<n;i++)
    {
        cin >> x >> y;
        double width=sqrt(d*d-y*y);
        l[i]={x-width,x+width};
        if(y>d)
        {
            cout << -1 << endl;
            return 0;
        }
    }
    sort(l,l+n,cmp);
    double last = -1e4;
    for(int i=0;i<n;i++)
    {
        if(l[i].l>last)
        {
            last=l[i].r;
            cnt++;
        }
    }
    cout << cnt << endl;
    return 0;
}




标签:opt,cnt,int,112,区间,雷达,贪心
From: https://www.cnblogs.com/lxl-233/p/17164576.html

相关文章

  • Educational Codeforces Round 112 (Rated for Div
    EducationalCodeforcesRound112(RatedforDiv.2)CodeForces-1555DSayNotoPalindromes如果一个字符串中不包含长度2以上的回文子串,我们就说这个字符串是漂亮......
  • 经典算法贪心(刷题归纳)
    <贪心算法greedyalgorithnm>本质是让机器模拟人类,每次都按照某一个标准取最优解,一般常用最优子结构问题,但不是所有的时候贪心都获得最优解。跟DP最大的区别在于,贪心不可......
  • 蓝桥杯2021国赛:巧克力 【贪心】
    题目描述小蓝很喜欢吃巧克力,他每天都要吃一块巧克力。一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝......
  • 122. 糖果传递(贪心)
    https://www.acwing.com/problem/content/description/124/求最小代价,且数据范围为1e6,大概是O(N)或O(NlogN),大概就是排个序,贪心一般都是排序设定每个小朋友给出的为xi,有如......
  • FMCW雷达设计------LFM波形(2)
    承接上一篇,咱们继续来学习FMCW雷达设计的相关知识,本篇文章将把LFM波形剩下的知识全部概括完,内容可能有点多,如果错误还请批评指正。参考书籍《FMCWRadardesign》。2.......
  • 特斯拉恢复使用毫米波雷达以及4D毫米波雷达的发展现状
    一、特斯拉恢复使用毫米波雷达2022年6月7日,特斯拉向FCC提交了有关毫米波雷达的材料。通常,在美国销售的射频相关产品必须向FCC提交第三方测试材料,以证明符合美国频谱控......
  • 轮转图、雷达图、简单Dotween
    3d轮转图usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;//usingDG.Tweening;publicclassRotationChart:MonoBehaviour{......
  • RV1126编译过程
    一、编译环境1、目标系统:ubuntu22.04LTS2、投屏器SDK下载:链接:https://pan.baidu.com/s/1OJQafxm38FnbshMEu432Og提取码:o6p3下载下来后,输入命令catrv1126.zip.001r......
  • 算法刷题-数组排序(图算法、算法高阶)、螺旋矩阵(数组、矩阵)、分发糖果(贪心、数组)
    数组排序(图算法、算法高阶)编写一个JavaApplication程序,将随机生成的无序数组使用冒泡排序,将这个混乱的数组变成一个从小到大排列的有序的数组并输出。classdemo_sort......
  • LeetCode 55. 跳跃游戏(/贪心)
    原题解题目约束题解classSolution{public:boolcanJump(vector<int>&nums){intn=nums.size();intrightmost=0;for......