519. 跳石头 - AcWing题库

组委会已经选择好了两块岩石作为比赛起点 0 和终点 L 。

在起点和终点之间,有 NN 块岩石(不含起点和终点的岩石)。

在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。

为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。

由于预算限制,组委会至多从起点和终点之间移走 MM 块岩石(不能移走起点和终点的岩石)。

如果长度 Len 可以满足,那么当长度小于 Len 时也可以满足,所以我们可以二分出最大的 Len。

首先验证答案具有单调性:拿走的石头越多,最短跳跃距离越大,这就叫答案的单调性。

然后进行实现。我们假设最短跳跃距离为mid,接着我们写一个check函数,判断一下这个mid是否合法如果合法,就尝试找一找有没有一个值比mid更大(l=mid),如果不合法,就把mid减小(r=mid-1)。

check函数:我们遍历一遍每一块石头,累计出有多少块石头之间的间隔<=mid,如果超过m个,就不合法,如果小于等于m,就合法

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int n, m, L;
vector<int> d;
bool check(int mx)
{int cnt = 0, last = 0;for (int i = 0; i <= n; i ++ ) {if(d[i] - last < mx) cnt ++;else last = d[i];}   return cnt <= m;
}
int main(){//std::ios::sync_with_stdio(false);//std::cin.tie(nullptr);cin >> L >> n >> m;d.resize(n);for (int i = 0; i < n; i ++ ) {cin >> d[i];}d.push_back(L);int l = 0, r = 1e9;while(l < r) {int mid = l + r + 1 >> 1;if(check(mid)) l = mid;else r = mid - 1;}cout << l << '\n';return 0;
}

NOIP2015跳石头【二分答案(最小值最大化) | 贪心】相关推荐

  1. 2015 提高组 跳石头--二分答案

    题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...

  2. [NOIP2015]跳石头

    题目: [NOIP2015]跳石头 ,哈哈,我们今天来看一道二分答案的题嘛,这是选自NOIP上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显示不对,我就把题目链接放下面! 题目 ...

  3. CodeVS1725 探险 【二分答案】【贪心】

    [题目描述] 有编号为1至n的n个同学一起去探险,现在把他们分成k个小组,每个小组完成一项探险任务.分组时,如果第i人与第j人分在同一组(i < j),则他们之间的所有人(第i+1,i+2,-, ...

  4. c语言二分答案最小值,C语言程序设计第2版课后习题答案(贾宗璞许合利人民邮电-第2版).doc...

    C语言程序设计第2版课后习题答案(贾宗璞许合利人民邮电-第2版) C语言习题答案 第1章 1.选择题 (1) C (2) B (3) 2.填空题 (1)main (2) main (3) 有穷性.确定 ...

  5. 【NOIP2015】D2-T1跳石头,二分答案

    如果这道题没有写60分的堆加贪心而是二分,如果我在考试前我能写一道自己一直在躲避的二分答案,如果我能骗到第三题哪怕15分,结果都会不同,可惜没如果-- ------------------------ ...

  6. 二分答案——跳石头(洛谷 P2678)

    题目选自洛谷P2678 这道题题目并不复杂,思考一下也能知道用二分的方法来做. 难点在于如何判断是否满足条件,以及二分的边界问题. 下面给出详细解题思路: //tot表示需要搬走的石块数量,i表示找的 ...

  7. c++二分答案 之 跳石头

    题目: 题目描述 Description 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和 ...

  8. 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头

    [题目链接] ybt 1890:[15NOIP提高组]跳石头 洛谷 P2678 [NOIP2015 提高组] 跳石头 ybt 1247:河中跳房子 OpenJudge NOI 1.11 10:河中跳房 ...

  9. 洛谷3933 Chtholly Nota Seniorious 二分答案+贪心

    题目链接 题意 给你一个N*M的矩阵 (N,M <=2000)  把他分成两部分 使两部分的极差较大的一个最小  求这个最小值.然后分矩阵的要求是:每个部分内部的方块之间,可以通过上下左右相互到 ...

最新文章

  1. 从 C++ 到 Objective-C
  2. 自动刷新某个指定网页
  3. linux命令-mkdir命令
  4. 硬件——STM32,GPIO篇
  5. 三十二、数据库设计的三范式【完】
  6. shutil的一些基本用法
  7. java项目部署到linux上面,把我的Java项目部署到Linux系统
  8. 基于NHibernate的留言本
  9. “约见”面试官系列之常见面试题之第九十四篇之MVVM框架(建议收藏)
  10. unity怎么制作云飘动_Unity 如何制作星空粒子效果?
  11. VMweare 典型创建 Kali Linux 虚拟机
  12. Linux下iptables屏蔽IP和端口号
  13. 小黑框运行java_初探Java类加载机制
  14. python数据结构6 -二叉树
  15. cocos2dx 制作单机麻将(四)
  16. 静态HTML网页设计作品我的家乡网站设计——我的家乡-绿城之都-南宁(9页) HTML+CSS+JavaScript 大学生简单个人静态HTML网页设计作品
  17. 数字和字符对照关系表常用(编码表)
  18. 嵌入式神经网络处理器-NPU
  19. 字符串的常见方法总结
  20. IdentityServer4(七):Consent授权页支持

热门文章

  1. PN结空间电荷区变宽变窄问题
  2. 广告SDK平台中的CPA、CPS、CPM、CPT、CPC 是什么
  3. 如何实现微信小程序手机号授权
  4. 笨办法学python pdf 第三版_笨办法学python第三版
  5. vbs查看系统开关机时间
  6. 太原市住房公积金商转公又新增一种担保方式
  7. 【海思篇】【Hi3516DV300】六、音频输入篇
  8. 动态规划—钢条切割问题与01背包问题
  9. 简单实现通讯录中文名字按拼音首字母排序
  10. 七夕节其实是最古老的异地恋