洛谷p1824 进击的奶牛 P1824 进击的奶牛 题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000,000)。 他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John想把这
首先我们需要明确,最大距离一定是在奶牛之间的距离中取得的。因此我们可以先对奶牛的坐标进行排序。然后二分答案,用check函数来判断在当前的最小距离下,是否能够放置m头奶牛。具体做法是,从左到右遍历奶牛的坐标,如果当前的奶牛和前面已经放置的奶牛的距离大于等于x,则说明可以在当前位置放置一头奶牛,继续向右遍历,直...
28行:mid是l和r的中间值,也就是本次循环所需要判断的“牛棚的最大间隔” 30行:if语句,跳转至自定义函数(后面有对自定义函数的分析),若函数的值为真,则将左边界更新为当前mid值(因为能取到的“最大间隔”更新了,所以范围更新了),若函数的值为假,那此时的mid已经“超标”(此时的“最大间隔候选人”已经过...
P1824 进击的奶牛 目录 题目描述 输入输出格式 输入输出样例 回到顶部 题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000,000)。 他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防...
【C++信奥赛】洛谷P1824进击的奶牛-二分答案.mp4, 视频播放量 10、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 2、转发人数 0, 视频作者 什么不高兴, 作者简介 回来啦!,相关视频:【C++信奥赛】洛谷P1873砍树-二分答案,【C++信奥赛】洛谷P3392涂条纹-一维前缀和,【C++
P1824 进击的奶牛 题解:二分枚举最大的最近距离。关键在于check函数的写法,首先可以确定第一个栏可以放一个牛,然后根据枚举的距离来判断是否能放 头牛,如果可以就继续增大距离,否则就减小距离。 代码 #include<bits/stdc++.h> usingnamespacestd; inta[100010],n,c; ...
洛谷P1824 进击的奶牛 题解 二分答案 题目链接:https://www.luogu.com.cn/problem/P1824 题目大意: 本题相当于在 \(n\) 个数中选 \(c\) 个数,使得这 \(c\) 解题思路: 我们首先可以给 \(a_1 \sim a_n\) 然后我们可以开始设计一个bool check(int x)函数,用来判断:在任意相邻两个数之差都 \...
P1824进击的奶牛 边界问题: 定义变量ans,储存当前优解。定义闭区间[left, right],代表程序当前正在此闭区间内寻找答案(寻找潜在的比ans更优的解) 令mid = (left + right)/2 若mid为解,则ans = max(ans, mid), left = mid + 1.此时我们更新了最优解,同时在最优解的右侧寻找潜在的更有解。 若mid不...
进击的奶牛问题如何解决? 进击的奶牛问题的背景是什么? 题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000,000)。 他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相...
因为想向右收缩,所以应该是给定的lenlen可以装下更多的奶牛。 3、贪心是指在左手边第一个,必须安排一个奶牛,这样才能使得隔间利用最大化!其它的奶牛,看看两个隔间之间的距离差是不是大于lenlen,发现一个大的,就意味着能多安排一个奶牛。nownow变量每次安排完一个奶牛就更新一次,这样方便下一次迭代。