尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

P2678 跳石头(二分算法)

P2678 跳石头(二分算法)
📅 发布时间:2026/7/8 1:46:27

P2678 [NOIP 2015 提高组] 跳石头

题目描述

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

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

输入格式

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

接下来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,第二次用链表,但链表排序难以操作。
当再次用类成员进行排序的时候,不仅时间复杂度过高,还涉及到前后成员的查找。尤其是当距离相同时,移除哪一个石头也有相同的判断,而且移除之后还涉及到后续移除距离的变化,完全无法判断
——于是转向二分。

相关新闻

  • python神经网络编程入门(四)----神经网络误差反向传播完全图解
  • 多项目采购怎么统一管?2026水利工程采购统筹与软件选型指南
  • 15个实用的代码审查工具,自动化检查

最新新闻

  • 为什么说许可管理是企业数字化的基础工程?
  • 彻底解决Python多版本冲突!下载安装+环境变量配置全流程详解!
  • 论文 AI 降重工具选型全指南:从安全、改写逻辑、查重适配三维筛选靠谱服务
  • Postgresql 数据库 自增字段,Vastbase 无效的问题
  • 找到高薪工作的第一步:初步了解python
  • OpenAI 微调权限收口后,先把评测和回退链路补起来

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号