二分答案——路标设置(洛谷 P3853)
题目选自洛谷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)相关推荐
- 二分答案——砍树(洛谷 P1873)
题目选自洛谷P1873 分析:如果句子非常低,可以收集到的木材会更多,以至于超过需要的数量.随着砍树高度逐渐增大,获得的木材会逐渐减少.砍树高度增加到一定程度时,收集到的木材就会开始不够用.因此需要找 ...
- 二分答案——跳石头(洛谷 P2678)
题目选自洛谷P2678 这道题题目并不复杂,思考一下也能知道用二分的方法来做. 难点在于如何判断是否满足条件,以及二分的边界问题. 下面给出详细解题思路: //tot表示需要搬走的石块数量,i表示找的 ...
- 二分答案——进击的奶牛(洛谷 P1824)
题目选自洛谷P1824 很容易看出答案随着区间的增加是单调的,因此采用二分的方式求解, 稍微改动的就是判断函数,这里得到一个距离,依次放入牛,判断能否放入下一头牛,当所有隔间都被遍历完后,如果成功放入 ...
- 二分答案——小车问题(洛谷 P1258)
题目选自洛谷P1258 主要是为了练习二分的基本思想, 具体思路如下 当然,还有更直接的方法,因为这道题就像小学解方程一样! 首先车带一个人行驶x段距离 然后丢下 折回找另外一个人 半路碰上 带回终点 ...
- 洛谷P3853 [TJOI2007]路标设置
P3853 [TJOI2007]路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题与 洛谷P2678 [NOIP2015 提高组] 跳石头 和 洛谷P1182 数列分段 ...
- 洛谷 P3853 [TJOI2007]路标设置
路标设置 二分枚举"空旷指数", 做法与跳石头类似. #include <iostream> #include <cstdio> #include < ...
- 二分+BFS——刺杀大使(洛谷 P1902)
题目选自洛谷P1902 我们在题面中看到了最大值最小 这五个字. 很容易就想到了二分答案. 同时题目涉及图,以及只能从四个方向,所以想到了BFS的解法 将这两种方法一起使用,就得到了答案! 题目描述 ...
- 算法设计 - 二分法和三分法,洛谷P3382
二分法 二分查找:找目标值位置 二分法是一种适用于特殊场景下的分治算法. 这里的特殊场景指的是,二分法需要作用在一个具有单调性的区间内. 比如,我们熟知的二分查找,就是一种二分法的具体实现,二分查找必 ...
- 洛谷P2181答案C语言,洛谷P2181 对角线(组合数)
题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...
最新文章
- 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化
- TensorFlow中的RNNCell基本单元使用
- 了解机器学习回归的3种最常见的损失函数
- 淘宝API商家自用型应用程序全部源代码和详细的帮助文档(1元有偿提供)
- 2021年假期怎么放?都给你安排得明明白白!
- highslide使用笔记
- [转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!
- 网管交换机与非网管交换机的利弊介绍
- System Center Technical Preview DPM(2016)对Exchange2016的灾难恢复
- python语言基本控制结构有哪些-以下不属于Python语言控制结构的是()
- 深入理解K8S网络原理下
- 基于AWT、Swing的GUI程序 - 改变观感
- Linux 镜像文件ISO下载地址:
- 局域网计算机共享加密码,局域网文件共享设置密码的方法
- ShadowGun Shaders
- Maven —— was cached in the local repository, resolution will not be reattempted until the update ...
- IReport问题的整理
- C语言程序设计预备作业
- 使用Mailgun API简化应用程序中的电子邮件
- 解决升级Flutter3.0后出现警告Operand of null-aware operation ‘!‘ has type ‘WidgetsBinding‘ which excludes null
热门文章
- 体温单开发_产品开发可以从我们的体温调节系统中学到什么?
- logstash判断是否匹配_logstash 中的贪婪匹配
- 关于涉密信息系统分级保护的几个问题
- 数据分类分级原则、流程、方法
- QRCode 二维码:生于日本,辉煌于中国,原理及(python)实现
- 机器学习 · 总览篇 III 统计推断: 频率学派和贝叶斯学派
- python中options是什么意思_在OPTIONS方法中显示棉花糖模式的描述
- 标准配置输入设备微型计算机,2012年计算机一级MsOffice第五十三套练习题及答案解析...
- 浙政钉2.0-应用监控(埋点)完整分析 及 成功实现埋点
- ssm基于JavaEE的电脑销售管理系统设计与实现毕业设计源码