#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 100010;
int a[N];
int L;//表示公路的长度
int n;//原有路标的数量
int k;//最多可增设的路标数量
bool check(int mid) {
//如果按空旷指数 mid进行安排,那么需要安排几个路标
int t = 0; //需要增加的路标个数
for (int i = 1; i < n; i++)
if (a[i + 1] - a[i] > mid) {
t += (a[i + 1] - a[i]) / mid;
//如果余数为零,还是要减去一个滴~
if ((a[i + 1] - a[i]) % mid == 0) t--;
}
return t <= k;//如果现在的路标数量小于k,也还行?~
}
int main() {
cin >> L >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
int l = 0, r = L;
while (l < r) {
int mid = l + r >> 1;
if (check(mid)) r = mid; // 使得公路的“空旷指数”最小,向小了逼近,r=mid
else l = mid + 1;
}
cout << l << endl;
return 0;
}
P3853 路标设置题解
原创
©著作权归作者所有:来自51CTO博客作者superhuanghai的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:P5731 蛇形方阵题解
下一篇:P3397 地毯题解
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Luogu P3853 路标设置
Luogu P3853 路标设置
算法 c++ 数据结构 i++ 二分答案 -
指路标问题
一道学校
#include i++ 最短路 -
LOOPS(hdu 3853)
题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望
#include ios i++ #define bzoj -
新博客路标
RT
技术