二分答案-整型二分—愤怒的牛-P1676 [USACO05FEB] Aggressive cows G

[USACO05FEB] Aggressive cows G

题目描述

农夫约翰建造了一座有 n n n 间牛舍的小屋,牛舍排在一条直线上,第 i i i 间牛舍在 x i x_i xi 的位置,但是约翰的 m m m 头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。

牛们并不喜欢这种布局,而且几头牛放在一个隔间里,它们就要发生争斗。为了不让牛互相伤害。约翰决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是多少呢?

输入格式

第一行用空格分隔的两个整数 n n n m m m

第二行为 n n n 个用空格隔开的整数,表示位置 x i x_i xi

输出格式

一行一个整数,表示最大的最小距离值。

样例 #1

样例输入 #1

5 3
1 2 8 4 9

样例输出 #1

3

提示

把牛放在 1 1 1 4 4 4 8 8 8 这三个位置,距离是 3 3 3。容易证明最小距离已经最大。

对于 100 % 100\% 100% 的数据, 2 ≤ n ≤ 1 0 5 2 \le n \le 10^5 2n105 0 ≤ x i ≤ 1 0 9 0 \le x_i \le 10^9 0xi109 2 ≤ m ≤ n 2 \le m \le n 2mn

不保证 a a a 数组单调递增。

题意
牛的最小距离的最大值(有限空间牛舍内牛的最大距离)
思路
距离越大 能装的牛越少

  • 最小值最大化,二分答案就解
  • 因为要判断距离,所以牛舍需要从小到大排个序
  • 牛的个数m作为约束条件,二分答案-距离。但是题目的特色在于牛舍的距离是一定的,所以二分时是不仅要考虑到牛的个数,还要遍历牛舍的距离。但是牛舍的间隔其实无所谓,只需要满足当前牛所在的牛舍-上一个牛所在的牛舍>=要求的间距ans即可
  • 其次,为了方便计算,每次将第一个牛放在第一个牛舍a0就行,因为放在第一个只会让间距更大/放更多的牛,且方便记录

数据约束
暂无
参考代码

在这里插入代码片#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int a[N],n,m;
bool check(int t);//判断间距为t时,是不是可以装这么多牛 
int main()
{int ans; //n个屋舍,m个牛cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);//先把牛舍位置从小到大排好 int l = 0,r = a[n]-a[1];while(l<=r){ //不能是l<r 一个也让进 !!! int mid = (l+r)/2; //ans = (l+r)>>1;if(check(mid)){ans = mid; //暂时定一个结果 l = mid + 1;//缩小范围 }else{r = mid-1;} }cout<<ans;return 0;
}
bool check(int t){int d = a[1]+t; int sum=1;//判断是否有m个牛 ,第一头放在a1了 for(int i=2;i<=n;i++){if(d<=a[i]) { //当前的距离是否不小于实际的最小距离要 sum++;//当前牛位置确定了(计算下一个牛知识放在哪个位置)d = a[i]+t;}} return sum>=m;} 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

境内部署DIfy(上篇)

背景&#xff1a; 由于近2年大模型的火热催生出很多业务场景&#xff0c;这也迫使我们这些老一辈的程序搬运工去接触新事物&#xff0c;“工欲善其事必先利其器”&#xff0c;先从大模型应用开始摸索&#xff0c;网上大把工具&#xff0c;再三思考后决定先从Dify开始&#xff…

[CKS] 利用Trivy对image进行扫描

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于Trivy镜像安全扫描的题目。 What’s Trivy Trivy的官方仓库https://github.com/aquasecurity/trivy&#xff0c;Trivy是一个开源的容器镜像漏洞扫描工具。它通过分析容器镜像中的操作系统包和应用…

vue3入门知识(一)

vue3简介 性能的提升 打包大小减少41%初次渲染快55%&#xff0c;更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 新的特性 1. Composition API&#xff08;组合API&#xff09; setupref与reactivecomput…

数据结构和算法入门

复杂度 大O记法 计算机怎么判断程序性能&#xff1f; 我们都知道编程基本上是在和数据打交道&#xff0c;大多数程序基本都在处理获取数据、查询数据、操作数据、返回数据相关的逻辑。 因此出现了数据结构和算法&#xff0c;这两者出现本质为了解决如何能够更快、更省进行数…

【Linux第八课-进程间通信】管道、共享内存、消息队列、信号量、信号、可重入函数、volatile

目录 进程间通信为什么&#xff1f;是什么&#xff1f;怎么办&#xff1f;一般规律具体做法 匿名管道原理代码 命名管道原理代码 system V共享内存消息队列信号量信号量的接口 信号概念为什么&#xff1f;怎么办&#xff1f;准备信号的产生信号的保存概念三张表匹配的操作和系统…

串的模式匹配

子串的定位操作通常称为串的模式匹配&#xff0c;它求的是子串(常称模式串)在主串中的位置。 子串——主串的一部分&#xff0c;一定存在 模式串——不一定能在主串中找到 朴素模式匹配 将主串中所有长度为m的子串&#xff08;共有n-m1个&#xff09;依次与模式串对比&…

继承的学习

1.继承 继承权限在类外&#xff0c;访问权限在类内部 1.1继承的概念 继承是面向对象程序设计使代码可以复用的重要手段&#xff08;解决类层次的复用问题&#xff09; 派生类&#xff1a;类特性的基础上进行扩展&#xff0c;增加方法&#xff08;成员函数&#xff09;和属性…

YOLOPv2论文翻译

YOLOPv2: Better, Faster, Stronger for Panoptic Driving Perception 摘要 在过去的十年中&#xff0c;多任务学习方法在解决全景驾驶感知问题方面取得了令人鼓舞的成果&#xff0c;既提供了高精度又具备高效能的性能。在设计用于实时实际自动驾驶系统的网络时&#xff0c;这…

跳表原理-课堂笔记

课程地址 跳表是一种基于随机化的有序数据结构&#xff0c;它提出是为了赋予有序单链表以 O(logn) 的快速查找和插入的能力 创建 首先在头部创建一个 sentinel 节点&#xff0c;然后在 L1 层采用“抛硬币”的方式来决定 L0 层的指针是否增长到 L1 层 例如上图中&#xff0c;L…

贪心day04(买卖股票的最佳时机)

1.买卖股票的最佳时机 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;我们其实只需遍历一篇就可以解决这个问题。首先我们定义一个min为无穷大值&#xff0c;再遍历只要有数字比min跟小我们就更改min的值就好&#xff0c;此时我们只需要找出…

【Python爬虫实战】深入解锁 DrissionPage:ChromiumPage 自动化网页操作指南

&#x1f308;个人主页&#xff1a;易辰君-CSDN博客 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、ChromiumPage基础操作 &#xff08;一&#xff09;初始化Drission 和 ChromiumPage 对象 &#xff0…

VS Code 插件 MySQL Shell for VS Code

https://marketplace.visualstudio.com/items?itemNameOracle.mysql-shell-for-vs-code

稳压二极管详解

目录 1. 工作原理 2. 稳压二极管的伏安特性曲线 3. 正向特性&#xff1a; 4. 反向特性 5. 稳定电压&#xff08;Vz&#xff09; 6. 动态电阻&#xff08;rz&#xff09; 7.最大耗散功率&#xff08;PzM&#xff09; 8. 最大稳定工作电流&#xff08;IzMAX&#xff09;和…

Springboot 一个西餐主题网站-计算机设计毕业源码73020

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 2.2.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…

JS渗透(安全)

JS逆向 基本了解 作用域&#xff1a; 相关数据值 调用堆栈&#xff1a; 由下到上就是代码的执行顺序 常见分析调试流程&#xff1a; 1、代码全局搜索 2、文件流程断点 3、代码标签断点 4、XHR提交断点 某通js逆向结合burp插件jsEncrypter 申通快递会员中心-登录 查看登录包…

世界技能竞赛大数据应用开发环境1:1还原

关注我&#xff0c;私信我获得集群环境 集群情况 模块A搭建环境&#xff0c;在容器中搭建大数据平台 Hadoop HA环境 Pc机&#xff0c;安装安装比赛需要软件 模块B中使用idea快速开发完成数据处理 模块E包含了接口数据&#xff0c;使用vs code快速搭建vue数据可视化

【c++丨STL】vector模拟实现

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C、STL 目录 前言 一、vector底层刨析 二、模拟实现 1. 属性、迭代器以及函数声明 2. 功能实现 交换两个容器的内容 构造函数 拷贝构造 赋值重载 析构…

指针的运用

接下来我将会用的话&#xff0c;讲解我对指针运用仅有的印象 1.解引用 int a23; int*p&a; *p666; 而*p666&#xff1b;&#xff0c;便是解引用操作&#xff0c;跟简单地说*p便是解引用&#xff0c;它的意思是&#xff0c;对p中所储存的地址所在位置的内容进行操作&#xf…

三周精通FastAPI:38 针对不同的编程语言来生成客户端

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/advanced/generate-clients/ 生成客户端 因为 FastAPI 是基于OpenAPI规范的&#xff0c;自然您可以使用许多相匹配的工具&#xff0c;包括自动生成API文档 (由 Swagger UI 提供)。 一个不太明显而又特别的优势是&#…

广告联盟有哪些

随着互联网的发展&#xff0c;越来越多的人开始投身于网站建设和运营。对于站长来说&#xff0c;如何在提供优质内容的同时获取收益是一个重要的问题。广告联盟作为一种常见的盈利模式&#xff0c;受到了广大站长的青睐。本文将介绍5个适合国内站长的广告联盟平台&#xff0c;帮…