二分——最大的最小值
题目背景
Mad Jim Jaspers为了证明钕磁铁的强大,拿来了一个有N个小槽的长木条,M个钕磁铁,第i个小槽在xi的位置上,为了不让磁铁互相吸引,每块磁铁离其他磁铁的距离应该尽可能的大。
请你帮MJJ写一个程序,求出所有磁铁之间最小距离的最大值。只要磁铁距离大于等于1就不会互相吸引。
输入格式:
第一行两个数,分别代表N和M。 接下来N行,每行一个整数,代表第i个小槽在木板上的位置。(最左边作为原点0)
输出格式:
输出所有磁铁之间最大的最小距离d。
输入样例#1:
5 3
1
2
8
4
9
输出样例#1:
3
思路:
二分法求最大的最小值:二分搜索判断距离,代码自带解析
代码如下:
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f;
using namespace std;
int a[100005];
int n,m;
bool jude(int d)
{int last=0; //last 表示第一个磁铁放置的位置for(int i = 1; i < m; i++){int now=last+1;while(now<n&&a[now]-a[last]<d)now++;//now表示下一个磁铁放置的位置if(now==n)return false;//如果不满足,返回falselast=now; //记录该磁铁放置的位置}return true;
}
int main()
{scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n); //从小到大排序int l=0,r=INF;while(r-l>1){ //二分搜索int mid=(l+r)/2;if(jude(mid))l=mid;//如果该距离满足条件,则距离+else r=mid;//否则,距离- }printf("%d\n",l);return 0;
}
二分——最大的最小值相关推荐
- POJ-2456.Aggressivecows.(二分求解最大化最小值)
本题大意:在坐标轴上有n个点,现在打算在这n个点上建立c个牛棚,由于牛对厂主的分配方式表示很不满意,它很暴躁,所以它会攻击离它很近的牛来获得快感,这件事让厂主大大知道了,他怎么可能容忍?所以他决定有策 ...
- NOIP2015跳石头【二分答案(最小值最大化) | 贪心】
519. 跳石头 - AcWing题库 组委会已经选择好了两块岩石作为比赛起点 0 和终点 L . 在起点和终点之间,有 NN 块岩石(不含起点和终点的岩石). 在比赛过程中,选手们将从起点出发,每一 ...
- 通往奥格瑞玛的道路(二分 + Dijkstra)
通往奥格瑞玛的道路(二分 + 最短路) 思路: 1.二分可解决最大最小或者最小最大一类的问题 2.题目意思可以说我根本看不懂,其实题意:从1到n所有可行路径中,每个路径都有某个城市收费最大,求所有城市 ...
- 力扣 774. 最小化去加油站的最大距离 二分答案
774. 最小化去加油站的最大距离 整数数组 stations 表示 水平数轴 上各个加油站的位置.给你一个整数 k . 请你在数轴上增设 k 个加油站,新增加油站可以位于 水平数轴 上的任意位置,而 ...
- 13.数据结构:二分搜索树
大家好,我是王有志.关注王有志,回复DSA获取数据结构与算法学习资源. 好久不见,不知道大家这个十一假期过得怎么样?有没有做好迎接7个工作日的准备呢? 接下来就开始我们今天的主题吧,第一个二叉树的应用 ...
- java实现二分搜索树
1.二分搜索树定义 二分搜索树是一个二叉树 二分搜索树的节点的值大于左子树,小于右子树的值 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FAbuFGnW-158419 ...
- 《剑指offer》c++版本 11. 旋转数组的最小数字
如题: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
- 数据结构与算法(3)——树(二叉、二叉搜索树)
前言:题图无关,现在开始来学习学习树相关的知识 前序文章: 数据结构与算法(1)--数组与链表(https://www.jianshu.com/p/7b93b3570875) 数据结构与算法(2)-- ...
- BZOJ4590: [Shoi2015]自动刷题机
[传送门:BZOJ4590] 简要题意: 有l秒时间,AC了k道题,给出每秒写的代码行数(行数>0表示写,<0表示删除,如果剩下的行数不够删,则为0),假设行数>=n时能够提交AC一 ...
最新文章
- 罗斯蒙特1056ph电极_ROSEMOUNT 罗斯蒙特 PH电极 0396R-10-2(0396R-10-2)
- centos7 安装 redis
- Windows Azure虚拟机概览
- Windows Server 2012 从入门到精通系列之如何提高DC持续性?
- 分布式锁(一) Zookeeper分布式锁
- Funnel-Transformer:让Transformer更高效地处理长序列
- redhat制作本地光盘yum源
- dom常用操作全后续会补充
- flink查看operater链的中间结果+SingleOutputStreamOperator的用法
- How is component metadata dependency dependencies consumed in the runtime
- LeetCode 642. 设计搜索自动补全系统(Trie树)
- linux的 定时器传参数,JavaScript 定时器调用传递参数的方法
- oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
- addcslashes与stripcslashes
- ELK日志搜索平台搭建
- 《游戏设计艺术(第二版)》第十二章个人学习
- linux 块设备 dm,[CentOS7]dm块设备删除
- 植物大战僵尸pak修改
- python 三维栅状图_基于OpenGL的二维矢量地图可视化技术研究
- Windows使用SSH登录VM虚拟机
热门文章
- GridView 高级技术
- Url解码,兼容utf-8和gb2312
- easyUI表单验证扩展
- WPF开发为按钮提供添加,删除和重新排列ListBox内容的功能
- 001 python接口 get请求
- nodejs系列笔记02---模块路径解析
- 5.修改本地库/远程仓库的地址
- Silverlight之我见——数据批示(2)
- 【jQuery笔记Part1】11-jQuery选择器
- Linux操作Oracle(6)——Oracle11g OPatch 打补丁全纪录【Oracle11g windowsX64位环境+OPatch11.2.0.3.28】及资源下载