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

二分答案:跳石头

题目:P2678 [NOIP 2015 提高组] 跳石头 - 洛谷

跳石头这道题!表面上看着简单,但耗费了我太多时间了!

细节点:

  • 不要忘记起点和终点    a[0] = 0;  a[N+1] = L;
  • 最大跳跃长度是起点到终点,right最大设置成L
  • calc的计算容易出错

calc的计算:

  1. 设置 j = i+1;
  2. 当 j 符合范围并且 可以跳跃时,j++。j往前跳就行了,i原地不动。
  3. 跳出while循环,计算移走的石头时不要忘记-1
  4. 更新i   

#include <iostream>using namespace std;
typedef long long LL;
const int n = 5e4 + 10; LL L, N, M, mid;
LL a[n];LL calc(LL x)
{LL ret = 0;for (int i = 0; i <= N; i++){int j = i+1;while(j <= N+1 && a[j]-a[i] < x) j++;ret += j-i-1;i = j-1;}return ret;
}int main()
{cin >> L >> N >> M;//求跳跃距离的最大值for (int i = 1; i <= N; i++) cin >> a[i];a[0] = 0;a[N+1] = L;//起点和终点的距离 LL left = 0, right = L;while(left < right){mid = (left+right+1)/2;if (calc(mid) > M) right = mid-1;else left = mid;		} if (calc(left) > M ) cout << 0 << endl;else cout << left << endl;return 0;
}

结合洛谷砍树,木材加工,跳石头这三道题。我们可以发现二分答案的使用场景有共同点

  1. 问题类型:最优化问题中的极值问题

  2. 共同特征​​:都是要求​​最大化最小值​​或​​最小化最大值​​的问题
  3. 答案在明确区间范围内
  4. 答案的单调性

如果值X满足条件,那么所有小于X的值(对于最大化问题)或所有大于X的值(对于最小化问题)也满足条件
反之,如果值X不满足条件,那么所有大于X的值(对于最大化问题)或所有小于X的值(对于最小化问题)也不满足条件
http://www.dtcms.com/a/393227.html

相关文章:

  • 注解学习,简单测试框架
  • python 自定义装饰器 + 框架
  • 【星闪】Hi2821 | KEYSCAN矩阵按键扫描
  • ​​[硬件电路-282]:PWM信号通用解读、应用场景及在步进电机中的应用详解
  • 给链表装上“后视镜”:深入理解双向链表的自由与高效
  • Off-Grid Direction of Arrival Estimation Using Sparse Bayesian Inference (II)
  • Unity中的渲染管线
  • PyMuPDF 库
  • 【故障】windows7开机后能出现windows启动界面,但停在黑屏很久才进入系统界面
  • tqdm 库
  • 模块化编程规范与分层设计指南
  • Photoshop - Photoshop 调整照片的颜色强度
  • 【ROS2】通讯机制 Topic 常用命令行
  • DeepSeek的GPU优化秘籍:解锁大规模AI训练的底层效率
  • Gemini in Chrome深度解析:反垄断胜诉后,Chrome开启AI智能浏览时代!
  • 如何修复 Google Chrome 上的白屏问题
  • Camera2原生api级 Demo答
  • 【Redis】Redis缓存与数据库DB数据如何保持同步?
  • 考研408---C语言复习
  • 批量抓取图片
  • WinDivert学习文档之五-————编程API(十一)
  • 【打印菱形】
  • XC7Z100-2FFG900I Xilinx AMD Zynq-7000 FPGA SoC
  • 成本价的SEO优化服务供应链
  • dock生命周期体验-生到死的命令
  • 软件测试方案-模板一
  • 防火墙WEB方式登录配置【HCL模拟】-学习篇(1)
  • Ceph用户管理与cephFS分布式存储实战
  • AgenticSeek:重新定义AI助手的边界 - 100%本地化智能代理系统深度解析
  • 701. 二叉搜索树中的插入操作