题目选自洛谷P3853

这题不算很难,类似于跳石子,典型的二分答案;

先简单说一下思路:

我们把公路上相邻路标的最大距离定义为该公路的“空旷指数”

求增设路标后能达到的最小“空旷指数”值

这两句明确的暗示了这题能使用二分答案;

再想一想,“空旷指数”越大越容易做到,满足单调性,可以用二分;

简单的二分思路,每次的mid

由于路标不可移动,那么我们只要考虑两个路标之间的距离,如果超出了mid就要考虑增加路标了。

增加路标时就是从一个路标开始,距离每有一个mid,就加一个路标,直到下一个路标。

此外注意几个小细节:

1.如果两路标之间的的距离正好是mid的倍数,要减去正好和最后一个路标重合的路标 (小学奥数)

2.二分板子不要写错了,注意小细节;

题目背景

B市和T市之间有一条长长的高速公路,这条公路的某些地方设有路标,但是大家都感觉路标设得太少了,相邻两个路标之间往往隔着相当长的一段距离。为了便于研究这个问题,我们把公路上相邻路标的最大距离定义为该公路的“空旷指数”。

题目描述

现在政府决定在公路上增设一些路标,使得公路的“空旷指数”最小。他们请求你设计一个程序计算能达到的最小值是多少。请注意,公路的起点和终点保证已设有路标,公路的长度为整数,并且原有路标和新设路标都必须距起点整数个单位距离。

输入格式

第1行包括三个数L、N、K,分别表示公路的长度,原有路标的数量,以及最多可增设的路标数量。

第2行包括递增排列的N个整数,分别表示原有的N个路标的位置。路标的位置用距起点的距离表示,且一定位于区间[0,L]内。

输出格式

输出1行,包含一个整数,表示增设路标后能达到的最小“空旷指数”值。

输入输出样例

输入 1

101 2 1
0 101

输出 1

51

说明/提示

公路原来只在起点和终点处有两个路标,现在允许新增一个路标,应该把新路标设在距起点50或51个单位距离处,这样能达到最小的空旷指数51。

50%的数据中,2 ≤ N ≤100,0 ≤K ≤100

100%的数据中,2 ≤N ≤100000, 0 ≤K ≤100000

100%的数据中,0 < L ≤10000000

解题代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100005],l,n,k;
bool jud(int ans){int cnt = 0;for(int i=2;i<=n;i++){if(a[i]-a[i-1] >=ans){cnt += (a[i] - a[i-1])/ans; //需要放置多少个if((a[i] - a[i-1])%ans ==0)cnt--; //如果刚好是倍数,需要减去一个重复的}}if(cnt > k) return false;return true;
}
int main(){cin>>l>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int le = 0,ri = l,mid;while(le < ri){mid = (le + ri) / 2;if(jud(mid)) ri = mid;else le = mid + 1;}cout<<le;return 0;
}

二分答案——路标设置(洛谷 P3853)相关推荐

  1. 二分答案——砍树(洛谷 P1873)

    题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...

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

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

  3. 二分答案——进击的奶牛(洛谷 P1824)

    题目选自洛谷P1824 很容易看出答案随着区间的增加是单调的,因此采用二分的方式求解, 稍微改动的就是判断函数,这里得到一个距离,依次放入牛,判断能否放入下一头牛,当所有隔间都被遍历完后,如果成功放入 ...

  4. 二分答案——小车问题(洛谷 P1258)

    题目选自洛谷P1258 主要是为了练习二分的基本思想, 具体思路如下 当然,还有更直接的方法,因为这道题就像小学解方程一样! 首先车带一个人行驶x段距离 然后丢下 折回找另外一个人 半路碰上 带回终点 ...

  5. 洛谷P3853 [TJOI2007]路标设置

    P3853 [TJOI2007]路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题与 洛谷P2678 [NOIP2015 提高组] 跳石头 和 洛谷P1182 数列分段 ...

  6. 洛谷 P3853 [TJOI2007]路标设置

    路标设置 二分枚举"空旷指数", 做法与跳石头类似. #include <iostream> #include <cstdio> #include < ...

  7. 二分+BFS——刺杀大使(洛谷 P1902)

    题目选自洛谷P1902 我们在题面中看到了最大值最小 这五个字. 很容易就想到了二分答案. 同时题目涉及图,以及只能从四个方向,所以想到了BFS的解法 将这两种方法一起使用,就得到了答案! 题目描述 ...

  8. 算法设计 - 二分法和三分法,洛谷P3382

    二分法 二分查找:找目标值位置 二分法是一种适用于特殊场景下的分治算法. 这里的特殊场景指的是,二分法需要作用在一个具有单调性的区间内. 比如,我们熟知的二分查找,就是一种二分法的具体实现,二分查找必 ...

  9. 洛谷P2181答案C语言,洛谷P2181 对角线(组合数)

    题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...

最新文章

  1. 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化
  2. TensorFlow中的RNNCell基本单元使用
  3. 了解机器学习回归的3种最常见的损失函数
  4. 淘宝API商家自用型应用程序全部源代码和详细的帮助文档(1元有偿提供)
  5. 2021年假期怎么放?都给你安排得明明白白!
  6. highslide使用笔记
  7. [转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
  8. 网管交换机与非网管交换机的利弊介绍
  9. System Center Technical Preview DPM(2016)对Exchange2016的灾难恢复
  10. python语言基本控制结构有哪些-以下不属于Python语言控制结构的是()
  11. 深入理解K8S网络原理下
  12. 基于AWT、Swing的GUI程序 - 改变观感
  13. Linux 镜像文件ISO下载地址:
  14. 局域网计算机共享加密码,局域网文件共享设置密码的方法
  15. ShadowGun Shaders
  16. Maven —— was cached in the local repository, resolution will not be reattempted until the update ...
  17. IReport问题的整理
  18. C语言程序设计预备作业
  19. 使用Mailgun API简化应用程序中的电子邮件
  20. 解决升级Flutter3.0后出现警告Operand of null-aware operation ‘!‘ has type ‘WidgetsBinding‘ which excludes null

热门文章

  1. 体温单开发_产品开发可以从我们的体温调节系统中学到什么?
  2. logstash判断是否匹配_logstash 中的贪婪匹配
  3. 关于涉密信息系统分级保护的几个问题
  4. 数据分类分级原则、流程、方法
  5. QRCode 二维码:生于日本,辉煌于中国,原理及(python)实现
  6. 机器学习 · 总览篇 III 统计推断: 频率学派和贝叶斯学派
  7. python中options是什么意思_在OPTIONS方法中显示棉花糖模式的描述
  8. 标准配置输入设备微型计算机,2012年计算机一级MsOffice第五十三套练习题及答案解析...
  9. 浙政钉2.0-应用监控(埋点)完整分析 及 成功实现埋点
  10. ssm基于JavaEE的电脑销售管理系统设计与实现毕业设计源码