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

P2678 跳石头(二分算法)

P2678 [NOIP 2015 提高组] 跳石头

题目描述

组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有NNN块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。

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

输入格式

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

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

输出格式

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

思路解析

枚举+二分
对最短距离的最大值进行枚举,枚举方法采用二分。
二分的关键在于出现了单调区间,使得枚举的时间复杂度显著降低、
本题单调区间提示:最大值
另一个反面思考:直接模拟全过程很复杂,可以对移除石头进行计数在比较,就可以免除繁琐过程。

#include"bits/stdc++.h"usingnamespacestd;intd[50010],L,n,m,ans;booljudge(intx){intcnt=0,now=0;for(inti=1;i<=n+1;i++){if(d[i]-d[now]<x)cnt++;//别忘了计数elsenow=i;//正常跳的情况下就是now=i,而不是now++;}if(cnt>m)return0;return1;}intmain(){cin>>L>>n>>m;for(inti=1;i<=n;i++)scanf("%d",&d[i]);d[n+1]=L;intl=1,r=L;while(l<=r){intmid=(l+r)/2;if(judge(mid))ans=mid,l=mid+1;//这里的mid+1elser=mid-1;//这里的mid-1需要注意}cout<<ans;return0;}

对一些错误的思考
看见这道题首先考虑到了贪心算法,不断删去最小距离值然后不断进行比较。
第一次想到了用Class,第二次用链表,但链表排序难以操作。
当再次用类成员进行排序的时候,不仅时间复杂度过高,还涉及到前后成员的查找。尤其是当距离相同时,移除哪一个石头也有相同的判断,而且移除之后还涉及到后续移除距离的变化,完全无法判断
——于是转向二分。

http://www.jsqmd.com/news/1144743/

相关文章:

  • 3.6 全链路压测与混沌工程——别等黑天鹅来了再后悔
  • 硬约束物理信息神经网络如何反演含水层渗透系数场——从数学原理到代码实现
  • 高端 IP 池纯净度高不高?3年实测经验告诉你真实答案
  • 海外 AI 工具订阅折腾记:支付困境与替代方案复盘
  • 第 23 讲:多文件改动时怎么降低 AI 失控概率
  • 分析 ServerCertificateChain#
  • 15个实用的JSON工具,格式化与验证
  • 15个实用的Git工具,版本控制效率提升
  • python神经网络编程入门(四)----神经网络误差反向传播完全图解
  • redis性能优化
  • 儿童阅读,选对读物能够激发孩子好奇心
  • FastAPI基础入门
  • 如何在Linux上实现毫秒级文件搜索:FSearch完整指南
  • 多项目采购怎么统一管?2026水利工程采购统筹与软件选型指南
  • 17-任职体系建设的10大坑,你踩了几个?(上)
  • 15个实用的代码审查工具,自动化检查
  • 分布式系统理论取舍原则分析
  • RocketMQ C++ SDK 完整实战教程|NameServer 集群、全局单例、消息重试与死信处理
  • 混沌密码理论与研究调研报告
  • 电商控价公司服务包括哪些?投诉维权怎么配合
  • 3步构建你的Limbus Company智能自动化助手:从零到实战完整指南
  • 基于 ESP32 的便携式心电信号采集与显示系统设计与实现
  • cifar10-python.tar.gz下载问题
  • Day 2:定位策略入门
  • 堡垒机 Web CLI 部署教程
  • Openclaw 微信渠道总刷屏英文 Thinking?一行 Prompt 搞定!
  • 15个实用的Markdown编辑器,写作体验
  • Java 转大模型开发:后端程序员的升级路线-2468
  • 所谓Skill,不过是包装好的Prompt
  • 支持外挂字幕的视频播放器推荐