题目背景

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;
}

二分——最大的最小值相关推荐

  1. POJ-2456.Aggressivecows.(二分求解最大化最小值)

    本题大意:在坐标轴上有n个点,现在打算在这n个点上建立c个牛棚,由于牛对厂主的分配方式表示很不满意,它很暴躁,所以它会攻击离它很近的牛来获得快感,这件事让厂主大大知道了,他怎么可能容忍?所以他决定有策 ...

  2. NOIP2015跳石头【二分答案(最小值最大化) | 贪心】

    519. 跳石头 - AcWing题库 组委会已经选择好了两块岩石作为比赛起点 0 和终点 L . 在起点和终点之间,有 NN 块岩石(不含起点和终点的岩石). 在比赛过程中,选手们将从起点出发,每一 ...

  3. 通往奥格瑞玛的道路(二分 + Dijkstra)

    通往奥格瑞玛的道路(二分 + 最短路) 思路: 1.二分可解决最大最小或者最小最大一类的问题 2.题目意思可以说我根本看不懂,其实题意:从1到n所有可行路径中,每个路径都有某个城市收费最大,求所有城市 ...

  4. 力扣 774. 最小化去加油站的最大距离 二分答案

    774. 最小化去加油站的最大距离 整数数组 stations 表示 水平数轴 上各个加油站的位置.给你一个整数 k . 请你在数轴上增设 k 个加油站,新增加油站可以位于 水平数轴 上的任意位置,而 ...

  5. 13.数据结构:二分搜索树

    大家好,我是王有志.关注王有志,回复DSA获取数据结构与算法学习资源. 好久不见,不知道大家这个十一假期过得怎么样?有没有做好迎接7个工作日的准备呢? 接下来就开始我们今天的主题吧,第一个二叉树的应用 ...

  6. java实现二分搜索树

    1.二分搜索树定义 二分搜索树是一个二叉树 二分搜索树的节点的值大于左子树,小于右子树的值 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FAbuFGnW-158419 ...

  7. 《剑指offer》c++版本 11. 旋转数组的最小数字

    如题: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  8. 数据结构与算法(3)——树(二叉、二叉搜索树)

    前言:题图无关,现在开始来学习学习树相关的知识 前序文章: 数据结构与算法(1)--数组与链表(https://www.jianshu.com/p/7b93b3570875) 数据结构与算法(2)-- ...

  9. BZOJ4590: [Shoi2015]自动刷题机

    [传送门:BZOJ4590] 简要题意: 有l秒时间,AC了k道题,给出每秒写的代码行数(行数>0表示写,<0表示删除,如果剩下的行数不够删,则为0),假设行数>=n时能够提交AC一 ...

最新文章

  1. Ant Design Vue 表格内编辑(附完整源码及效果图)
  2. 洛谷2014选课(树型dp)
  3. springmvc静态资源;mvc:default-servlet-handler后Controller失效
  4. android 弹出网格菜单,在android中的recyclerView中显示弹出按钮的确...
  5. Java 面试题(4)—— 多线程
  6. java.util.concurrent.TimeUnit
  7. 关于SQL Server自动备份无法删除过期的备份文件奇怪现象
  8. 更新日志_CargoWare系统云平台更新日志2020.11.24
  9. 智力问答选择题_2018智力问答题大全及答案:智力问答题大全及答案
  10. 笔试c语言编程题技巧,c语言笔试题答题技巧
  11. Python实现基于VGG16迁移学习实现手写数字识别
  12. 附加和分离SQL数据库
  13. 快速学计算机的方法,学电脑打字用什么方法学的最快
  14. Fixture证书权限导致CSR申请证书失败的问题 [已解决]
  15. 用Matplotlib画两张花里胡哨的图
  16. 软件开发:项目设计思路(流程、功能方法和数据结构)
  17. 编写一个静态方法 lg(), 接受一个整型参数 N,返回不大于 log2N 的最大整数。
  18. Android 跳转到第三方应用(应用间的跳转)
  19. Thinkpad T460更换固态硬盘
  20. 图片验证码识别-自动登录工具开发

热门文章

  1. jQuery中兄弟元素、子元素和父元素的获取
  2. 学习笔记大型《构建高性能web站点》
  3. httpclient 在获取返回值时,使用getResponseBody触发警告的问题
  4. (二)surging 微服务框架使用系列之surging 的准备工作consul安装(转载 https://www.cnblogs.com/alangur/p/8377977.html)...
  5. Jupyter notebook 转 pdf [完整转换]
  6. webstorm的个性化设置settings
  7. Flask初级(十)flash与前台交互post详解
  8. 深入解析alloc/retain/release/dealloc实现
  9. [转]各种互斥量的总结
  10. 一个拼凑sql,输出变量的 存储过程