zoukankan      html  css  js  c++  java
  • P3853 路标设置题解

    题目传送门

    #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;
    }
    
  • 相关阅读:
    缓冲区
    4.9
    JDBC连接
    3.31
    BizTalk框架概述
    不通过SPS对象模型更改文档扩展字段的方法
    asdfasdf
    设计模式介绍
    Multiple Checkbox Items In A DataGrid Introduction
    Factory Method
  • 原文地址:https://www.cnblogs.com/littlehb/p/15059729.html
Copyright © 2011-2022 走看看