简要题意

有一只青蛙在 \(1\) 处,有一些石头,位于 \(2,3,4,\cdots n\),它们的高度是 \(H_2,H_3,\cdots,H_n\)。青蛙每落一次石头,该石头的高度就会 \(-1\),直至高度为 \(0\),此时不能落下。如果青蛙的跳跃能力为 \(k\),那么从 \(i\) 就可以跳到 \([i+1,i+k]\)。求青蛙的最小跳跃能力,使得可以跳 \(2x\) 遍。

思路

首先不难得出结论,如果跳跃能力为 \(k\) 可以胜任,那么对于任意一个长度为 \(k\) 的区间,区间和大于 \(2x\)。

我们可以先求一遍前缀和,然后只需要枚举跳跃能力进行验证。

不好意思,这样子你会收获一个 TLE。

然后我们考虑优化算法,根据生活常识,我们可以知道,即使一只青蛙的跳跃能力大于我们的预期,它依然可以满足条件。所以,答案其实是单调的。单调的问题我们使用二分解决。

时间复杂度 \(O(n\log n)\)。

代码

  1. #include <bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. int n,x,l,r,mid;
  5. int a[1000005],qzh[10000005];
  6. bool check(int nl){
  7. bool flag=1;
  8. for(int l=1,r=nl;r<=n;l++,r++){
  9. if(qzh[r]-qzh[l-1]<(x<<1)){
  10. flag=0;
  11. break;
  12. }
  13. }
  14. return flag;
  15. }
  16. signed main(){
  17. ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  18. cin>>n>>x;
  19. n--;
  20. for(int i=1;i<=n;i++)cin>>a[i];
  21. for(int i=1;i<=n;i++)qzh[i]=qzh[i-1]+a[i];
  22. l=1,r=n;
  23. while(l<=r){
  24. mid=(l+r)>>1;
  25. if(check(mid)){
  26. r=mid-1;
  27. }
  28. else{
  29. l=mid+1;
  30. }
  31. }
  32. cout<<l;
  33. return 0;
  34. }

P8775 [蓝桥杯 2022 省 A] 青蛙过河的更多相关文章

  1. 蓝桥杯2022年java试题

    一:基础练习: (本文只附代码,解析后续修改后添上) 1.a+b问题: 代码如下: 1 import java.util.*; 2 public class Main { 3 public stati ...

  2. ooj 1066 青蛙过河DP

    http://121.249.217.157/JudgeOnline/problem.php?id=1066 1066: 青蛙过河 时间限制: 1 Sec  内存限制: 64 MB提交: 58  解决 ...

  3. [LeetCode] Frog Jump 青蛙过河

    A frog is crossing a river. The river is divided into x units and at each unit there may or may not ...

  4. NOIP 2005 青蛙过河

    做题记录:2016-08-10 21:58:09 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都 ...

  5. 2012年 蓝桥杯预赛 java 本科 题目

    2012年 蓝桥杯预赛 java 本科 考生须知: l  考试时间为4小时. l  参赛选手切勿修改机器自动生成的[考生文件夹]的名称或删除任何自动生成的文件或目录,否则会干扰考试系统正确采集您的解答 ...

  6. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  7. 蓝桥杯---数独(模拟 || dfs)

    [编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...

  8. 蓝桥杯---剪格子(DFS&BFS)(小总结)

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...

  9. 蓝桥杯--Quadratic Equation

    蓝桥杯--Quadratic Equation 问题描述 求解方程ax2+bx+c=0的根.要求a, b, c由用户输入,并且可以为任意实数. 输入格式:输入只有一行,包括三个系数,之间用空格格开. ...

  10. 趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

随机推荐

  1. vlunhub靶场之EMPIRE: LUPINONE

    准备: 攻击机:虚拟机kali.本机win10. 靶机:EMPIRE: LUPINONE,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub ...

  2. Linux基础_4_文件夹管理

    文件路径 . #表示当前目录,同./ .. #表示上级目录,同../ ../../ #表示上上级目录 / #表示根目录 注:文件名长度不超过255个字符 注:.开头为隐藏文件 切换目录 cd #默认切 ...

  3. C语言表白窗口程序

    #include<windows.h> #include<stdio.h> #include<string.h> int main() { char modeCom ...

  4. python视频与帧图片的相互转化,以及查看视频分辨率

    1.拆分视频为帧图片 import cv2 def video2frame(videos_path,frames_save_path,time_interval): vidcap = cv2.Vide ...

  5. 5.-GET请求和POST请求

    一.定义 无论是GET请求还是POST,统一由视图函数接收请求,通过判定request.method区分具体的请求动作     二.GET处理 GET请求方式中,如果有数据需要传递给服务器,通常会用查 ...

  6. Windows下自动云备份思源笔记到Gitee

    前言 思源笔记是一款本地笔记为主的软件,其目前提供了148元/year的付费同步功能,但对于21世纪中国难民而言还是太贵啦. 条件允许的同学还是使用官方的同步,支持下作者. 所以,就在思考有没有白嫖的 ...

  7. web安全学习(sql注入1)

    web安全学习(sql注入1) 一.简介 sql语句就是数据库语句,而sql注入就是用户将自己构造的恶意sql语句提交,然后服务器执行提交的危险语句.sql注入可能造成信息泄露以及服务器被控制等危害. ...

  8. Excel常用需求

    常用数据统计格式 外列表套内列表 [['name1','age1'],['name2','age2'],['name3','age3']] 外列表套内字典 [{'name':'xie','score' ...

  9. jupyter初体验

    安装: 1.若是已经安装了anaconda,则通过  jupyter notebook 命令进入: 2.若是只安了python: pip3 install --upgrade pip   对pip进行 ...

  10. 2022-11-01 Acwing每日一题

    第k个数 给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数. 输入格式 第一行包含两个整数 n 和 k. 第二行包含 n 个整数(所有整数均在 1 ...