7-6 愤怒的牛 (25 分)

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

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

输入格式:

第一行用空格分隔的两个整数n和m,n,m<=105;

第二行为n个用空格隔开的整数,表示位置xi​。xi​<MAXINT

输出格式:

输出仅一个整数,表示最大的最小距离值。

输入样例:

5 3
1 2 8 4 9

输出样例:

3
#include <bits/stdc++.h>
using namespace std;
int a[100010];
int l, r;
int n,c;/*bool juge(int m)//判断距离m是否可以
{int s = 0, last = 1;//记录上一个 for (int i = 2; i <= n; i++)//依次枚举每个牛栏 {if (a[i] - a[last]<m)s++;//若此距离不满足当前答案,那么需要的牛栏数+1,即把当前牛放到下一个牛栏 else last = i;//否则就更新上一次的牛栏位置 ,即上一头牛放的位置 if (s>n - c) return false;//若需要牛栏数大于最大牛栏数,此答案不可行 }return true;
}*/bool juge(int m)
{int ans = 1, last = 1;           //因为第一个牛一定要占据第一个隔间(这样能使本题的答案最优),所以ans初始化为1for (int i = 2; i <=n; i++){if (a[i] - a[last] >= m){ans++;           //如果比最近距离要大的话,那么该隔间就放牛   last = i;                                               }}if (ans >= c)return true;          //如果所选取的隔间数量>=c,则说明枚举的最近距离成立,但是不够大,所以return true,继续枚举更大的距离return false;
}int main()
{cin >> n >> c;for (int i = 1; i <=n; i++)cin >> a[i];l = 1; r = a[n] - a[1];           //右边界为n个隔间的总长度,最近距离一定小于等于这个数值sort(a + 1, a + 1 + n);while (l <=r){int mid = (l + r)/2;if (juge(mid))l = mid+1;       //如果当前枚举的最近距离符合,那么就让l=mid,看更大的距离是否也符合(因为要求最大的最近距离)elser = mid-1;}cout << r<< endl;    //由于最后l<=r的时候还会运行一次,会让l-1(如果答案正确的话),所以应该输出的是rreturn 0;
}

7-6 愤怒的牛 (25 分)相关推荐

  1. 7-2 愤怒的牛 (25分)

    7-2 愤怒的牛 (25分) 农夫约翰建造了一座有n间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在x ​i ​​ 的位置,但是约翰的m头牛对小屋很不满意,因此经常互相攻击.约翰为了防止牛之间互相伤害, ...

  2. 7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析

    7-14 电话聊天狂人 (25 分)map做法 1:题目 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 ​5 ​​ ),为通话记录条数.随后N行 ...

  3. 天梯赛 L2-032 彩虹瓶 (25 分)

    L2-032 彩虹瓶 (25 分) 思路: 读完题目就知道是用栈处理, 值得注意的是 1 while (s.size() && s.top() == d)中,要先判断栈的大小,再判断栈 ...

  4. pta-L2-032 彩虹瓶 (25 分)

    L2-032 彩虹瓶 (25 分) 彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小球( ...

  5. 一起开心2020蓝桥寒假训练(二)7-6 彩虹瓶 (25分)用到栈,队列

    一起开心2020蓝桥寒假训练(二)7-6 彩虹瓶 (25分) 彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按 ...

  6. L2-032 彩虹瓶 (25分)(C语言)

    L2-032 彩虹瓶 (25分) 彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里. 假设彩虹瓶里要按顺序装 N 种颜色的小球(不 ...

  7. 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一 ...

  8. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

    7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  9. PTA 03-树1 树的同构 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构   (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...

最新文章

  1. 第十八 django及ORM操作
  2. 用户空间与内核空间,进程上下文与中断上下文[总结]
  3. J2EE团队与DotNet团队如何合作开发一个系统?
  4. c++文件中jni库找不到报红
  5. SAP CRM BSP UI gif and color handling
  6. java中的getfirst_Java LinkedList getFirst()用法及代码示例
  7. mysql 二次 聚合,MySql-聚合查询
  8. 华为telnet的两种连接方式
  9. spring+struts2+mybatis
  10. IIS7的CMD指令
  11. canon lbp6200 macos下单面双面打印设置
  12. zend新建php项目,如何使用Zend Studio创建PHP项目
  13. Unity 实现部分模型流光效果
  14. 便携式频谱仪无人机机载频谱仪解决方案
  15. Android开源库——xUtils框架
  16. python中数字加引号和不加引号的区别_高考完小白自学Python,不太懂print语句中一个加引号,一个不加?...
  17. Web3 | DID赛道之 Galxe(原 Project Galaxy)
  18. 基于树莓派的流星雨监测系统(RMS)的搭建
  19. Redis服务器集群搭建
  20. vue中打开一个新页面

热门文章

  1. Windows配置SSHKey到GItHub
  2. Qt调用exit()、quit()不生效问题
  3. 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling
  4. 去哪儿网2015校园招聘笔试面试经历分享
  5. CSS span标签中文字水平垂直对齐
  6. 为什么北京人和上海人都成了“杭漂“?
  7. php正则表达式替换字符,php正则表达式如何替换字符
  8. 术业有专攻,数据库的 dba
  9. 博客项目学习笔记十二:登录注册功能(登录)
  10. 如何拦截烦人的视频广告