P8775 [蓝桥杯 2022 省 A] 青蛙过河

题目描述

小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。

河里的石头排成了一条直线,小青蛙每次跳跃必须落在一块石头或者岸上。不过,每块石头有一个高度,每次小青蛙从一块石头起跳,这块石头的高度就会下降 1,当石头的高度下降到 0 时小青蛙不能再跳到这块石头上(某次跳跃后使石头高度下降到 0 是允许的)。

小青蛙一共需要去学校上 x 天课,所以它需要往返 2x 次。当小青蛙具有一个跳跃能力 y 时,它能跳不超过 y 的距离。

请问小青蛙的跳跃能力至少是多少才能用这些石头上完 x 次课。

输入格式

输入的第一行包含两个整数 n,x, 分别表示河的宽度和小青蛙需要去学校的天数。请注意 2x 才是实际过河的次数。

第二行包含 n−1 个非负整数 H1,H2,⋯ ,Hn−1​, 其中 Hi>0 表示在河中与 小青蛙的家相距 i 的地方有一块高度为 Hi​ 的石头,Hi=0 表示这个位置没有石头。

输出格式

输出一行, 包含一个整数, 表示小青蛙需要的最低跳跃能力。

输入输出样例

输入 #1

复制代码
5 1
1 0 1 0

输出 #1

复制代码
4

说明/提示

【样例解释】

由于只有两块高度为 1 的石头,所以往返只能各用一块。第 1 块石头和对岸的距离为 4,如果小青蛙的跳跃能力为 3 则无法满足要求。所以小青蛙最少需要 4 的跳跃能力。

【评测用例规模与约 定】

对于 30% 的评测用例,n≤100;

对于 60% 的评测用例,n≤1000;

对于所有评测用例,1≤n≤,1≤x≤,0≤Hi≤

蓝桥杯 2022 省赛 A 组 F 题。

题目解析

一条河,河里有些石头,小青蛙要上x天学,也就说他要从湖面上经过2x次,在石头起跳会使石头高度降低1,高度为0时不能经过,现在要求他跳跃能力最小是多少(在跳跃能力内的石头他都能跳到)

解题方法

看到这题我们想到最简单的方法就是枚举,但很显然数据并不允许,那么我们就得考虑优化枚举(做题时,可以先考虑枚举的做法,在考虑如何优化),这道题很显然可以用二分优化,大家就看,二分跳跃能力,中间值跳不过去,那就找比较大的那块区域,跳过去了,就考虑比较小的那块区域,看看有没有更小的。而在求可不可以跳过去那块,只需要用前缀和维护一下就可以了(前缀和判断区域内是否有落脚点)

代码

理解了最重要,这里放上ACcode,如果你是为这个而来的,那么恭喜你,你做了一定跟没做一样。

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,a[100001],qzh[100001];
bool checker(int mid){
	for(int i=mid;i<n;i++){
		if(qzh[i]-qzh[i-mid]<2*x){
			return 0;
		}
	}
	return 1;
}
signed main(){
	scanf("%lld%lld",&n,&x);
	for(int i=1;i<=n-1;i++){
		scanf("%lld",&a[i]);
		qzh[i]=qzh[i-1]+a[i];
	}
	int left=1,right=n;
	while(left<right){
		int mid=(right+left)/2;
		if(checker(mid))right=mid;
		else left=mid+1;
	}
	printf("%lld",left);
} 

讲完了,希望大家能够理解

留个赞关个注再走呗qwq

相关推荐
_OP_CHEN15 小时前
【算法基础篇】(三十二)动态规划之背包问题扩展:从多重到多维,解锁背包问题全场景
c++·算法·蓝桥杯·动态规划·背包问题·算法竞赛·acm/icpc
闻缺陷则喜何志丹18 小时前
【图论 组合数学】P10912 [蓝桥杯 2024 国 B] 数星星|普及+
c++·数学·蓝桥杯·图论
_Voosk18 小时前
C指针存储字符串为何不能修改内容
c语言·开发语言·汇编·c++·蓝桥杯·操作系统
闻缺陷则喜何志丹2 天前
【计算几何 二分查找】P12261 [蓝桥杯 2024 国 Java B] 激光炮|普及+
c++·数学·蓝桥杯·计算几何·洛谷
_OP_CHEN2 天前
【算法基础篇】(三十一)动态规划之基础背包问题:从 01背包到完全背包,带你吃透背包问题的核心逻辑
算法·蓝桥杯·动态规划·背包问题·01背包·完全背包·acm/icpc
闻缺陷则喜何志丹2 天前
【计算几何】P12144 [蓝桥杯 2025 省 A] 地雷阵|普及+
c++·数学·蓝桥杯·计算几何
迈巴赫车主2 天前
蓝桥杯 20531黑客java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
Benmao⁢2 天前
C语言期末复习笔记
c语言·开发语言·笔记·leetcode·面试·蓝桥杯
_OP_CHEN4 天前
【算法基础篇】(二十九)路径类线性 DP 保姆级教程:从矩阵到迷宫,覆盖 4 道经典题 + 优化神技
算法·矩阵·蓝桥杯·动态规划·算法竞赛·acm/icpc·路径类动态规划
_OP_CHEN5 天前
【算法基础篇】(二十八)线性动态规划之基础 DP 超详解:从入门到实战,覆盖 4 道经典例题 + 优化技巧
算法·蓝桥杯·动态规划·运筹学·算法竞赛·acm/icpc·线性动态规划