愤怒的牛(重回基础二分)
https://ac.nowcoder.com/acm/contest/951/A
题目描述
农夫约翰建造了一座有n间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在xix_ixi的位置,但是约翰的m头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。
牛们并不喜欢这种布局,而且几头牛放在一个隔间里,它们就要发生争斗。为了不让牛互相伤害。John 决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是多少呢?
输入描述:
第一行用空格分隔的两个整数n和m;
第二行为n个用空格隔开的整数,表示位置 xix_ixi
输出描述:
输出仅一个整数,表示最大的最小距离值。输入
5 3 1 2 8 4 9输出
3说明
把牛放在1,4,8这样最小距离是3 。
二分和三分的详解:https://www.cnblogs.com/zzh666/p/9418071.html
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cmath>
#include<string>
#include<map>
#include<queue>
using namespace std;typedef long long ll;
ll x[100001];
ll a[100001];
ll n,m;
//最关键的部分check
bool check(ll X){ll bef=x[0],total=1;//从第一个牛开始遍历,第一头牛被安排下total=1; ll i;for(i=1;i<n;i++){if(x[i]-bef>=X){//大于距离X,符合条件 total++;//安排下一只牛 bef=x[i];//记录新安排下的牛的位置 }if(total>=m)return true;//提前安排好m个牛肯定满足条件 }return false;
}int main(){scanf("%lld %lld",&n,&m);for(int i=0;i<n;i++){scanf("%lld",x+i);}sort(x,x+n);ll minn=0x3f3f3f3f;//求最小的距离 for(ll i=1;i<n;i++){minn=min(x[i]-x[i-1],minn);}ll l=minn,r=x[n-1]-x[0];//求最大的二分范围 //二分模板 while(l<=r){ll mid=(l+r)>>1;if(check(mid))l=mid+1;else r=mid-1;}cout<<r<<endl;//不明白一个地方:求出来的r一定就能符合给定的数组的安排吗 return 0;
}
愤怒的牛(重回基础二分)相关推荐
- BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )
最小最大...又是经典的二分答案做法.. -------------------------------------------------------------------------- #inc ...
- 从两道基础二分算法题谈check函数的写法
第一题:愤怒的牛 loj链接 两道题目都是基础二分的模板题,先看第一题,题意为总共有nnn间牛舍,mmm头牛,要将mmm头牛安排在nnn间牛舍,为防止牛互相攻击,使两头牛之间的最小距离最大!最大! 最 ...
- 7-2 愤怒的牛 (25分)
7-2 愤怒的牛 (25分) 农夫约翰建造了一座有n间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在x i 的位置,但是约翰的m头牛对小屋很不满意,因此经常互相攻击.约翰为了防止牛之间互相伤害, ...
- 1433:【例题1】愤怒的牛
1433:[例题1]愤怒的牛 题解 This is an er'fen ti. 由题意可得 它是求最小值最大的问题 我们假设: 每两头牛之间的最小距离为 d ,也就是每两头牛之间的距离 >= ...
- 【2020年天梯赛校选赛】7-16 愤怒的牛
[2020年天梯赛校选赛]7-16 愤怒的牛 农夫约翰建造了一座有n间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在xi 的位置,但是约翰的m头牛对小屋很不满意,因此经常互相攻击.约翰为了防止牛之间 ...
- 7-6 愤怒的牛 (25 分)
7-6 愤怒的牛 (25 分) 农夫约翰建造了一座有n间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在xi的位置,但是约翰的m头牛对小屋很不满意,因此经常互相攻击.约翰为了防止牛之间互相伤害,因此决定 ...
- 2017泰牛java_泰牛PHP基础到高级教程
2017泰牛PHP基础到高级教程全套课件是小编为大家分享的一套可以让你快速的把自己需要的内容在线观看的资源,而且自带很多让你开心快乐的元素,需要的下载吧. 可以让你学习到PHP的精髓 2017泰牛PH ...
- 2019最新《分享泰牛PHP基础班+大牛班+高级课程》
分享泰牛PHP基础班+大牛班+高级课程 分享泰牛PHP基础班+大牛班+高级课程 分享泰牛PHP基础班+大牛班+高级课程 下载地址:百度网盘
- BZOJ1734: [Usaco2005 Feb]Aggressive cows 愤怒的牛
[传送门:BZOJ1734] 简要题意: 约翰有N 间牛棚,这些牛棚坐落在一条直线上,第i 间牛棚位于坐标Xi 的位置.他要把C 头 奶牛安排在这些牛棚里.每间牛棚最多可以放一头奶牛,也可以空着.这些 ...
- 一本通题解——1433 愤怒的牛
题目链接 一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid=1433. 自己OJ:http://47.110.135.197/problem.php ...
最新文章
- TestNG学习随笔
- ffmpeg播发器(H265)
- java的知识点12——==和equals方法、 super关键字、 继承树追溯、封装的作用和含义、封装的实现—使用访问控制符、封装的使用细节
- Linux查看修改时间、时区
- 在保护继承中基类的共有成员_C#初学者教程系列11:继承
- Java的HashCode,Equal和==
- 聚类算法_案例实战:聚类实战
- 加拿大程序员趣闻系列 1/N
- 省级刊物发表有什么要求?需注意什么事项?
- java中equals,hashcode和==的区别
- Qwtpolar的编译
- linux java sdk_java linux sdk1.8
- Python 廖雪峰Python练习答案
- 基于java高德地图经纬度转详细地址和GPS坐标转换为高德地图坐标
- 服务器Linux系统下常见的软件包有哪些
- 将多个excel文件合并为:一个excel文件的多个sheet页【方法技巧】
- 三维扫描仪中投射模块/投影仪推荐
- 存储数据恢复案例_磁盘阵列数据恢复_raid5磁盘掉线数据恢复方法
- win7笔记本设置WiFi热点详解
- uni-app修改页面背景色: