首页 > 其他分享 >洛谷题单指南-二分查找与二分答案-P3853 [TJOI2007] 路标设置

洛谷题单指南-二分查找与二分答案-P3853 [TJOI2007] 路标设置

时间:2024-03-01 15:45:27浏览次数:28  
标签:二分 cnt P3853 int 洛谷题 mid 路标 空旷

原题链接:https://www.luogu.com.cn/problem/P3853

题意解读:相邻路标的最大距离即空旷指数,空旷指数越小,用的路标越多,因此可以根据空旷指数将使用路标情况分成两类:路标数<=K,路标数>K,对空旷指数进行二分即可。

解题思路:

二分的判定条件为,

给定空旷指数,计算需要的路标数

只需遍历每两个相邻路标,如果距离>空旷指数,则在此区间增加的路标数为:距离/空旷指数,如果除不尽向下取整,如果能除尽还要减一

如果增加的路标数<=K,则满足要求,继续二分找更小的空旷指数,否则二分找更大的空旷指数。

100分代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 100005;

int a[N], L, n, k, ans;

bool check(int x)
{
    long long cnt = 0;
    for(int i = 2; i <= n; i++)
    {
        int dist = a[i] - a[i - 1];
        if(dist > x)
        {
            if(dist % x == 0) cnt += dist / x - 1; //能除尽增加的路标数
            else cnt += dist / x; //除不尽增加的路标数
        }
    }
    return cnt <= k;
}

int main()
{
    cin >> L >> n >> k;
    for(int i = 1; i <= n; i++) cin >> a[i];

    int l = 1, r = L;
    while(l <= r)
    {
        int mid = (l + r) >> 1;
        if(check(mid)) ans = mid, r = mid - 1;
        else l = mid + 1;
    }
    cout << ans;

    return 0;
}

 

标签:二分,cnt,P3853,int,洛谷题,mid,路标,空旷
From: https://www.cnblogs.com/jcwy/p/18047236

相关文章

  • 洛谷题单指南-二分查找与二分答案-P2678 [NOIP2015 提高组] 跳石头
    原题链接:https://www.luogu.com.cn/problem/P2678题意解读:最短跳跃距离越大,要移走的石头就越多,因此可以根据最短跳跃距离的不同把情况分为两类:移走的石头数<=M、移走的石头数>M,对最短跳跃距离二分即可。解题思路:二分的判定条件如下:对于给定最短跳跃距离,需要计算移走的石头数,......
  • 【STL】二分搜索的实现与stl标准库的应用
    在算法题中经常会出现搜索的题目,如果使用暴力搜索在数据量较大时会超时,(如\(10^5\)数量级时\(O(n^2)\)就会超时,\(O(nlogn)\)则通常不会),因此常用二分搜索等进行优化。虽然stl库中关于二分搜索的接口很好用,很适合区间二分搜索,但我们仍需掌握C++实现二分搜索,“虽然这是一个简单的算法......
  • 洛谷题单指南-二分查找与二分答案-P2440 木材加工
    原题链接:https://www.luogu.com.cn/problem/P2440题意解读:切出来的长度越短,则段数越多,可以通过二分长度来解决。解题思路:二分的关键在于判定条件,此题就是对二分到的长度计算可以切割的段数,如果段数大于等于k,则满足要求,可以继续加大长度。注意点:1、计算切割出来的段数是累加:每......
  • 整数二分算法(自用)
    1.思想对于一个已排序数组,找到一个点,使得数组被分为两部分,即此点左部和右部(点在左部或右部中的一个),比如数组中小于等于某数x的部分与大于的部分;对于整数二分而言两个范围之间是没有空隙的,即左部分的边界x的下一个数一定在右部分。我们可以根据题目选择多种方法二分数组,大类上分......
  • 二分
    二分查找模板总结二分查找是一种在有序数组中查找某一特定元素的搜索算法。元素集合有顺序,元素性质有分界点,二分法就可以用来求分界点,并不一定要求集合中元素是不重复的。算法思路:假设目标值在闭区间[left,right]中,每次将区间长度缩小一半,当left=right时,我们就找到了......
  • 洛谷题单指南-二分查找与二分答案-P1678 烦恼的高考志愿
    原题链接:https://www.luogu.com.cn/problem/P1678题意解读:要计算不满意度之和的最小值,就要保证每个人的不满意度最小,即选择的学校录取分数-学生分数之差的绝对值最小。解题思路:如何在学校录取分数中找与学生分数最接近的呢?有三种可能:1、学生分数在录取分数中存在相等的2、学......
  • 洛谷题单指南-二分查找与二分答案-P1102 A-B 数对
    原题链接:https://www.luogu.com.cn/problem/P1102题意解读:寻找A-B=C的数对数量,C大于0,B一定比A小,枚举B,找A是否存在即可。解题思路:先将数据由小到大排序,接下来介绍两种方法:二分、双指针1、二分枚举第1~n-1个数,作为B,寻找A=B+C的数量,只需要通过二分查找第一A和最后一个A的位置l、......
  • CF514D R2D2 and Droid Army(二分,ST表)
    传送门解题思路直接二分能干掉的人数,然后check函数枚举所有区间,因为m很小,所以可以用m个ST表预处理每个区间对应每个属性的最大值。一是需要注意二分的写法,而是注意check(0)时候的特判。AC代码#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#......
  • 洛谷题单指南-二分查找与二分答案-P2249 【深基13.例1】查找
    原题链接:https://www.luogu.com.cn/problem/P2249题意解读:找有序数组中某个数第一次出现的位置,二分模版题,由于是二分板块的第一题,有必要对二分的各种模版进行介绍。解题思路:关于二分的一切:1、二分的本质二分的本质,是通过某种判定把目标范围划分成两个区间二分问题通常有两......
  • 二分查找——修补木桶
    修补木桶-HihoCoder1362-VirtualJudge(vjudge.net)#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>usingnamespacestd;#defineintlonglong#defineQAQ0constintN=2e5+5,inf=0x3f3f3f3f,mod=1e7+7;int......