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

二分答案——洛谷P2678 跳石头

洛谷P2678 跳石头 题解

题目概述

在一条长度为L的笔直河道中,起点在0位置,终点在L位置。起点和终点之间有 N 块岩石,每块岩石的位置已知且按升序给出。

现在,你可以移走最多M块岩石(不能移走起点和终点的岩石),目标是让选手在跳跃过程中,所有相邻岩石之间的最短跳跃距离尽可能大。你需要输出这个最大的最短跳跃距离

分析

暴力模拟会非常耗时,显然行不通。用直接模拟也十分困难。但是我们发现,这是一个典型的最小值最大问题,而且答案具有一定的范围(\([1,l]\)),可以尝试去二分答案,看看答案是否单调:我们发现,如果通过移走\(\le\)M块石头满足了一个最短跳跃距离,那么一定可以通过某种方案满足任意的比它更小的最短跳跃距离,反之,如果一个最短跳跃距离无法实现,那么比他跟大的也一定无法实现。

所以,我们可以通过二分去找到最大的可行值。记某一猜测值为res,核心在与怎么判断res是可行的,也就是check函数。我们知道,移走一块与它前面一块岩石的距离本就比res大的岩石,结果是不会变的,也就是说,我们需要处理那些原先与前一块岩石的距离就比res短的,把它移走,才能满足条件,同时,在搬走所有有影响的岩石后,我们还有注意有一个M限定着,所以如果最后总共搬走的石头数量超过了限制的M,就可以确定res是一个不可行值。

AC代码

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 5e4 + 5;
int l, n, m;
int dist[N];bool check(int x)
{int cnt = 0;  // 记录完成目标需要移走的石头数量int last = 0; // 上一个要保留的石头距起点的位置,初始为起点for (int i = 1; i <= n + 1; i++){if (dist[i] - last < x) // 小于目标,不满足,需要移走这块石头{cnt++;}else{last = dist[i]; // 保留这块石头,更新last}}return cnt <= m;
}int main()
{cin >> l >> n >> m;dist[0] = 0;dist[n + 1] = l;for (int i = 1; i <= n; i++){cin >> dist[i];}// 二分答案int left = 1, right = l + 1;while (left + 1 < right){int mid = (left + right) >> 1;if (check(mid)){left = mid;}else{right = mid;}}cout << left << endl;
}

总结

看到最大的最小值或者最小的最大值,一般是二分答案

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

相关文章:

  • 酒店业法务数字化转型:智能合同与风险预警实践
  • 从GitHub趋势看AI编程新基建:私有化、本地化与工作流重构
  • 2026想找靠谱河南AI优化公司可了解相关参考方向 - 起跑123
  • 2026精选:汕头空调控制开关企业怎么选?煌顺电子专业制造方案解析 - 装修教育财税推荐2026
  • AI 定制开发 2-4 周交付,成熟方案复用到底复用了什么
  • 聚焦2026市场 不锈钢圆钢实用选购推荐指南 - 起跑123
  • HarmonyOS应用开发实战:猫猫大作战-DotIndicator 的完整配置选项
  • 2026年7月最新门墙柜一体靠谱推荐品牌排行汇总榜单 - 起跑123
  • 电动车走什么物流便宜?2026年Top5品牌实测推荐 - 快递物流资讯
  • 2026 年至今,仙桃可靠的加厚曝气盘生产厂家怎么联系,别再花冤枉钱!养鱼增氧的这款好物,竟能省一半还不堵盘?-新水源水处理材料 - 企业推荐管【认证】
  • (2026最新)南京本地人必选的靠谱漏水检测维修推荐:正规防水补漏防水-卫生间/厨房/屋顶/阳台/外墙渗漏水精准测漏,本地人的信赖之选 - 安佳防水
  • 链接内容转文字的合规边界与正确步骤 - AI测评专家
  • 宜昌装修公司白名单2026:品质可靠之选 - 盟道科技
  • c语言中的指针p->a
  • 云客服系统“消息太多管不过来”?智能分配与自动化工作流方案
  • springboot 启动mongoDB报错之禁用mongoDB自动配置
  • Audio Slicer:告别手动剪辑的智能音频分割解决方案
  • 2026 年小红书去水印用什么工具?下载方法和免费工具横评 - 耶斯去水印
  • 2026无锡封窗厂家推荐 本地服务商综合实力排行 - 起跑123
  • 观察 Taotoken 在不同网络环境下的 API 响应表现
  • 2026年一分钟快速换模系统厂家选择评测 - 起跑123
  • 英雄联盟智能助手:5分钟掌握本地化游戏效率工具
  • 英雄联盟国服免费皮肤注入器:R3nzSkin完整使用指南
  • TCP/IP协议簇是一个分层的网络通信模型,通常分为四层(或对应OSI七层的简化映射):应用层、传输层、网络层(网际层)、网络接口层(链路层)
  • 如何高效获取国家中小学智慧教育平台电子课本:场景驱动的PDF教材下载解决方案
  • 2026年7月最新湖南长沙梅溪湖全屋定制口碑排行参考 - 起跑123
  • 2026体育单招中职学校推荐 南宁商贸学校相关介绍 - 起跑123
  • 抖音无水印视频下载终极指南:三步保存高清原创内容
  • 2026浙江场景下证件挂绳定制厂家选品相关梳理 - 起跑123
  • (2026最新)十堰本地人必选的靠谱漏水检测维修推荐:正规防水补漏防水-卫生间/厨房/屋顶/阳台/外墙渗漏水精准测漏,本地人的信赖之选 - 安佳防水