当前位置: 首页 > article >正文

[最小距离的最大值] 跳石头

[最小距离的最大值] 跳石头

题目背景

一年一度的“跳石头”比赛又要开始了!

题目描述

这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N N N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。

为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M M M 块岩石(不能移走起点和终点的岩石)。

输入格式

第一行包含三个整数 L , N , M L,N,M L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。保证 L ≥ 1 L \geq 1 L1 N ≥ M ≥ 0 N \geq M \geq 0 NM0

接下来 N N N 行,每行一个整数,第 i i i 行的整数 D i ( 0 < D i < L ) D_i( 0 < D_i < L) Di(0<Di<L), 表示第 i i i 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。

输出格式

一个整数,即最短跳跃距离的最大值。

样例 #1

样例输入 #1

25 5 2 
2
11
14
17 
21

样例输出 #1

4

提示

输入输出样例 1 说明

将与起点距离为 2 2 2 14 14 14 的两个岩石移走后,最短的跳跃距离为 4 4 4(从与起点距离 17 17 17 的岩石跳到距离 21 21 21 的岩石,或者从距离 21 21 21 的岩石跳到终点)。

数据规模与约定

对于 20 % 20\% 20%的数据, 0 ≤ M ≤ N ≤ 10 0 \le M \le N \le 10 0MN10
对于 50 % 50\% 50% 的数据, 0 ≤ M ≤ N ≤ 100 0 \le M \le N \le 100 0MN100
对于 100 % 100\% 100%的数据, 0 ≤ M ≤ N ≤ 50000 , 1 ≤ L ≤ 1 0 9 0 \le M \le N \le 50000,1 \le L \le 10^9 0MN50000,1L109

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int d,n,m;
const int N=5e4+10;
int a[N];
int ans;
bool check(int x)
{
	int tot=0;//为达到预期实际需要移走的石头数
	int i=0;//下一个石头的坐标
	int pep=0;//人的坐标
	while(i<n+1)
	{
		i++;//下一个石头的坐标必须大于等于人
		if(a[i]-a[pep]<x)//如果距离小于预期最小距离
			tot++;//要移走的石头使预期最小距离就是最小距离
		else//大于的话人就可以跳过去
			pep=i;//人的坐标就到了i
	}
	if(tot>m)//要移走的石头比限定的数量大,不行,没有那么多石头可移走
		return false;
	else
		return true;
}
int main()
{
	cin>>d>>n>>m;
	int i;
	for(i=1;i<=n;i++)
		cin>>a[i];
	a[n+1]=d;//终点是d
	int l=1,r=d;
	while(l<=r)
	{
		int mid=(r+l)/2;
		if(check(mid))//预期的最小距离
		{
			l=mid+1;//看看右边有没有更大的符合条件的值
			ans=mid;
		}
		else
			r=mid-1;//看看左边有没有合法值
	}
	cout<<ans<<endl;
	return 0;
}

http://www.kler.cn/a/15168.html

相关文章:

  • 环形缓冲区 之 STM32 串口接收的实现
  • 【动手学深度学习Pytorch】6. LeNet实现代码
  • 如何在C#中处理必盈接口返回的股票数据?
  • Debezium-MySqlConnectorTask
  • 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
  • jmeter常用配置元件介绍总结之配置元件
  • node(express框架)连接mysql 基础篇
  • 数据结构——求二叉树的属性
  • 制造策略 ETO、MTO、ATO、MTS
  • 09 【Sass语法介绍-函数指令】
  • 原理这就是索引下推呀
  • ChatGPT能让智能客服更上一层楼么?
  • Mac 地址与 IP 地址有什么区别?
  • RocketMQ第二节(安装和模块详解)
  • TCP分岔:优化云服务的性能
  • 入局生成式AI,看好亚马逊(AMZN)中期表现
  • Superset整合keycloak系统
  • linux平台移植qt
  • 浅谈欧拉定理及其扩展
  • 重写Qt中的Widget移动事件
  • 大好河山集团董事长黄国林受邀出席2023中国好公司高峰论坛暨产学研合作峰会
  • 快速理解哈希(Hash)表的运作原理
  • C++语言亚马逊国际获取AMAZON商品详情 API接口(
  • 7.3 股票分析(project)
  • Java中的try-with-resources语句
  • ctr特征重要性建模:FiBiNetFiBiNet++模型