牛客网---------[USACO 2016 Jan S]Angry Cows

题目描述

Bessie the cow has designed what she thinks will be the next big hit video game: "Angry Cows". The premise, which she believes is completely original, is that the player shoots cows with a slingshot into a one-dimensional scene consisting of a set of hay bales located at various points on a number line. Each cow lands with sufficient force to detonate the hay bales in close proximity to her landing site. The goal is to use a set of cows to detonate all the hay bales.

There are N hay bales located at distinct integer positions x1,x2,…,xN on the number line. If a cow is launched with power R landing at position x, this will causes a blast of "radius R", destroying all hay bales within the range x−R…x+R.

A total of K cows are available to shoot, each with the same power R. Please determine the minimum integer value of R such that it is possible to use the K cows to detonate every single hay bale in the scene.

输入描述:

The first line of input contains N (1≤N≤50,000) and K (1≤K≤10). The remaining N lines all contain integers x1…xN (each in the range 0…1,000,000,000).

输出描述:

Please output the minimum power R with which each cow must be launched in order to detonate all the hay bales.

 示例1:

输入:

7 2
20
25
18
8
10
3
1

输出:

5

题目翻译:

奶牛贝西设计了一款她认为会成为下一个热门视频游戏的游戏:“愤怒的奶牛"。她认为这款游戏完全是原创的,游戏的前提是玩家用弹弓将奶牛射入一个由一组干草捆组成的一维场景中,这些干草捆位于一条数线上的不同点上。每头奶牛落地时都会产生足够的力量,以引爆着陆点附近的干草包。目标是用一组奶牛引爆所有干草包。有 N 个干草包,分别位于数线上不同的整数位置 x1、x2..xN。如果发射功率为R的奶牛落在x位置,就会产生"半径为 R"的爆炸,摧毁 [x-R,x+R] 范围内的所有干草包。请确定 R的最小整数值,以便能够用K头奶牛引爆场景中的每一个干草捆。 


分析:

此题为二分答案,可以推出 r 越大,k 越小,具有单调性,所以我们小缩小距离,取找合适的炸弹数 。

图解:


AC代码如下: 

#include<iostream>
#include<algorithm>

using namespace std;

const int N = 50010;
int n,k,a[N];

bool check(int x)
{
    int cow=0,last=0;
    for(int i=0;i<n;i++)
    {
        if(a[i] - a[last] > 2*x)
        {
            cow++; //扔一个牛炸弹
            //双指针算法 i在前走,j来保证(j,i)这个范围能被一个炸弹炸到(即:保证a[i]-a[j]<=2*mid)
            last = i; 
        }
        //这里为什么要加1呢,举个例子 1 10 15
        //假如2*x=10,后面的15就空出来了,也不会执行cnt++,所以要+1。
        if(cow + 1 > k) return false;
    }
    return true;
}

int main()
{
    scanf("%d %d",&n,&k);
    for(int i=0;i<n;i++) cin >> a[i];
    //用二分之前要先排好序
    sort(a,a+n);
    //这里就读好题,取好范围即可
    int l=0,r=1e9;
    //因为此题是求最小值,所以使用左面模板
    while(l < r)
    {
        int mid = l + r >> 1;
        if(check(mid)) r = mid;
        else l = mid + 1;
    }
    cout << l;
    return 0;
}

代码和注释有采取大佬的思路,欢迎提问~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/350200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中仕教育:事业单位考试考什么?

事业单位考试分为两个阶段&#xff0c;分别是笔试和面试&#xff0c;考试科目包括公共科目和专业科目两部分。 公共科目内容是公共基础知识、职业能力测试或申论。一种形式为&#xff1a;公共基础知识职业能力测试或职业能力测试申论。另一种形式为&#xff1a;公共基础申论。…

图像字幕中一些广泛使用的技术

文章目录 R-CNNsRNNsLSTMs and GRUsResNet R-CNNs 在图像识别领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;不仅可以识别出图像中的物体&#xff0c;还能检测出这些物体的边界框。如果我们使用传统的CNN进行对象检测&#xff0c;一种方法是在图像上覆盖一层栅格&a…

理想架构的Doherty功率放大器理论与仿真

Doherty理论—理想架构的Doherty功率放大器理论与仿真 参考&#xff1a; 三路Doherty设计 01 射频基础知识–基础概念 ADS仿真工程文件链接&#xff1a;理想架构的Doherty功率放大器理论与仿真 目录 Doherty理论---理想架构的Doherty功率放大器理论与仿真0、Doherty架构的作用…

试卷扫描转化word的功能有吗?分享4款工具!

试卷扫描转化word的功能有吗&#xff1f;分享4款工具&#xff01; 随着科技的飞速发展&#xff0c;将试卷扫描并转化为Word文档已经成为我们日常学习和工作的常规需求。但是&#xff0c;市面上的扫描工具众多&#xff0c;如何选择一个既方便又准确的工具呢&#xff1f;本文将为…

JDWP原理分析与漏洞利用

JDWP(Java DEbugger Wire Protocol):即Java调试线协议,是一个为Java调试而设计的通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。说白了就是JVM或者类JVM的虚拟机都支持一种协议,通过该协议,Debugger 端可以和 target VM 通信,可以获取目标 VM的包括类…

力扣刷题 第十二 边权重均等查询

现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重为 wi 的边。 另给你一个长度为 m 的二维整数数…

windows根据pid查看端口号

一.什么是PID 任务管理器中的PID指的是进程标识符&#xff08;Process Identifier&#xff09;&#xff0c;它用于在操作系统中唯一标识一个进程二.查看JAVA程序的PID jps命令即可三.根据PID查看端口 netstat -ano|findstr pid

QT5.14.2开发的Mysql8.0系统安装部署过程

最近在Windows 11 64位系统下使用QT5.14.2开发了套系统、使用了MYSQL8.0数据库&#xff0c;项目使用mingw-64编译器进行编译&#xff0c;编译完成后使用windeployqt进行发布&#xff0c;并制作安装包&#xff0c;拷贝到工控机Windows10 64位系统上进行安装运行。本文记录下安装…

机器人3D视觉引导半导体塑封上下料

半导体塑封上下料是封装工艺中的重要环节&#xff0c;直接影响到产品的质量和性能。而3D视觉引导技术的引入&#xff0c;使得这一过程更加高效、精准。它不仅提升了生产效率&#xff0c;减少了人工操作的误差&#xff0c;还为半导体封装技术的智能化升级奠定了坚实的基础。 传统…

兄弟HL-2260黑白激光打印机加粉清零方法

兄弟HL-2260是打印机厂商Brother生产的一款黑白激光多功能一体机&#xff0c;兄弟HL-2260打印机是一款高性价比的打印机&#xff0c;广泛应用于办公和家庭的打印设备&#xff0c;它的打印速度快&#xff0c;而且打印效果好。但是&#xff0c;使用久了之后难免会遇到一些问题&am…

Python学习07—字符串类型及操作

一、字符串类型的表示 字符串是由0个或多个字符组成的有序序列。字符串可由一对单引号或一对双引号表示。由于字符串是有序序列&#xff0c;因此&#xff0c;可以对其中的字符进行索引&#xff0c;且在索引时&#xff0c;字符是从0开始编号。 字符串有两类和四种表示方式&…

Linux——进程间通信(共享内存)

目录 system V共享内存 ​编辑 共享内存函数 共享内存的建立过程 shmget函数 shmctl函数 shmat函数 shmdt函数 实例代码 共享内存的特点 system V共享内存 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff08;即内存通过某种映射关…

Modern C++ std::bind的实现原理-举例

上节《Modern C std::bind的实现原理-CSDN博客》主要讲的是原理&#xff0c;本节举个例子并画图帮助理解。 上程序&#xff1a; #include <functional> #include <iostream>// A function taking three arguments void printValues(int a, double b, const std::…

探秘Dmail:Web3世界的通讯引领者

摘要&#xff1a;在一个充满潜力并且对创新要求严格的领域中&#xff0c;Dmail作为一种开创性的Web3通讯协议应运而生。 1月24日&#xff0c;OKX Jumpstart宣布上线Dmail&#xff0c;在Web3领域引起了巨大反响&#xff0c;这是一个旨在重新定义数字通讯范式的富有远见的项目&a…

【快影】怎么去除视频上不想要的东西?

您好&#xff0c;您可以试试编辑器中的「一键修复」功能&#xff0c;选中主轨或者画中画&#xff0c;点击底部一键修复功能&#xff0c;框选视频中不想要的内容&#xff0c;点击生成&#xff0c;即可预览修复效果&#xff1b;目前该功能是VIP专属功能&#xff0c;开通快影VIP即…

web前端项目-动画特效【附源码】

文章目录 一&#xff1a;赛车游戏动画HTML源码&#xff1a;JS源码&#xff1a;CSS源码&#xff1a;&#xff08;1&#xff09;normalize.css&#xff08;2&#xff09;style.css 二&#xff1a;吉普车动画演示HTML源码&#xff1a;CSS源码&#xff1a;&#xff08;1&#xff09…

Docker 容器内运行 mysqldump 命令来导出 MySQL 数据库,自动化备份

备份容器数据库命令&#xff1a; docker exec 容器名称或ID mysqldump -u用户名 -p密码 数据库名称 > 导出文件.sql请替换以下占位符&#xff1a; 容器名称或ID&#xff1a;您的 MySQL 容器的名称或ID。用户名&#xff1a;您的 MySQL 用户名。密码&#xff1a;您的 MySQL …

【自动化测试】测试开发工具大合集

收集和整理各种测试工具&#xff0c;自动化测试工具&#xff0c;自动化测试框架&#xff0c;觉得有帮助记得三连一下。 欢迎提交各类测试工具到本博客。 通用测试框架 JUnit: 最著名的xUnit类的单元测试框架&#xff0c;但是不仅仅可以做单元测试。TestNG: 更强大的Java测试框…

CSS 实现 flex布局最后一行左对齐的方案「多场景、多方案」

目录 前言解决方案场景一、子项宽度固定&#xff0c;每一行列数固定方法一&#xff1a;模拟两端对齐方法二&#xff1a;根据元素个数最后一个元素动态margin 场景二、子项的宽度不确定方法一&#xff1a;直接设置最后一项 margin-right:auto方法二&#xff1a;使用:after(伪元素…

遇到这3种接口测试问题,其实,你可以这么办~

作为整个软件项目的必经环节&#xff0c;软件测试是不可缺少的“查漏补缺”环节。而作为软件测试中的重要一环——接口测试&#xff0c;几乎串联了整个项目所有的输入和输出环节。 前几年&#xff0c;我在做后端测试时&#xff0c;接触最多的正是接口测试。基于此&#xff0c;…