蓝桥杯备考:二分答案之路标设置

最大距离,找最小空旷指数值,我们是很容易想到用二分的,我们再看看这个答案有没有二段性

是有这么个二段性的,我们只要二分就行了,但是二分的check函数是有点不好想的,我们枚举空旷值的时候,为了达成该空旷值,我们要在每两个路标之间插入路标,我们最好的插法就是平均插,因为靠右一点或者靠左一点都会导致极值偏大,只有最平均的情况才是去掉极值的好方法

当然如果是0~6有个路标,我们目标达成的最大空旷值是2,

我们是需要两块板子的,也就是6/2-1

当然,如果两个路标之间距离是奇数个距离的话

我们就要插三块板子也就是7/2个板子

好的,话不多说我们来实现一下我们的代码

cpp 复制代码
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int len, n, k;
int a[N];
bool check(int x)
{
	int cnt = 0;
	for (int i = 1; i < n; i++)
	{
		int d = a[i + 1] - a[i];
		cnt += d/x - 1;
		if (d %x )
		{
			cnt++;
		}
	}
	return k >= cnt;
}
int main()
{
	cin >> len >> n >> k;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	int l = 1, r = len;
	while (l < r)
	{
		int mid = (l + r) / 2;
		if (check(mid)) r = mid;
		else l = mid + 1;
	}
	cout << l << endl;




	return 0;
}
相关推荐
闻缺陷则喜何志丹16 分钟前
【贪心 字典序 回文 最长公共前缀】LeetCode3734. 大于目标字符串的最小字典序回文排列|分数未知
c++·算法·力扣·贪心·字典序·回文·最长公共前缀
weixin_5142218534 分钟前
FDTD代码学习-1
学习·算法·lumerical·fdtd
AI柠檬1 小时前
机器学习:数据集的划分
人工智能·算法·机器学习
让我们一起加油好吗2 小时前
【数论】裴蜀定理与扩展欧几里得算法 (exgcd)
算法·数论·裴蜀定理·扩展欧几里得算法·逆元
Geo_V2 小时前
提示词工程
人工智能·python·算法·ai
侯小啾2 小时前
【22】C语言 - 二维数组详解
c语言·数据结构·算法
TL滕2 小时前
从0开始学算法——第一天(如何高效学习算法)
数据结构·笔记·学习·算法
傻童:CPU2 小时前
DFS迷宫问题
算法·深度优先
B站_计算机毕业设计之家2 小时前
计算机视觉:python车辆行人检测与跟踪系统 YOLO模型 SORT算法 PyQt5界面 目标检测+目标跟踪 深度学习 计算机✅
人工智能·python·深度学习·算法·yolo·目标检测·机器学习
sheepfagdng3 小时前
求职专栏-【面试-自我介绍】
面试·职场和发展