zoukankan      html  css  js  c++  java
  • b_zj_插入广告(二分)

    某视频网站有N个视频,每个视频时长为秒。产品经理找到你,希望你帮忙在其中插入M个广告。
    一个视频里的两个广告必须间隔一段时间,当然间隔时间可以为0。
    为了用户体验,他希望这个间隔时间尽可能长。为了方便实现,间隔时间是一个整数。
    请你帮忙计算一下,这个间隔时间最大可以设置为多少秒呢?如果不能插入广告,则输出0。
    输入
    第一行有两个整数N, M(1<=N<=100000, N<M<=5000000)
    第二行有N个整数,表示视频的时长(1<=<=1e9)
    输出
    一个整数,表示最大的间隔时间

    样例输入
    3 9
    90 100 120
    样例输出
    45
    说明
    最长广告间隔为45秒。第一个视频时长90秒,可以在第0秒,第45秒,第90秒分别插入一个广告,总共3个广告。
    
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef pair<ll, ll> pii;
    const int mod=1e9+7, N=2e6+5;
    int n, need, tot, a[N];
    
    bool check(int mid) {
        int c=0;
        for (int i=0; i<n; i++) {
            if (a[i] >= mid) {
                c += ((a[i]) / mid - 1) + 2;
            } else {
                c += 1;
            }
        }
        return c >= need;
    }
    int main() {
        std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
        cin>>n>>need;
        for (int i=0; i<n; i++) cin>>a[i];
        int l=1, r=INT_MAX/2, ans=0;
        while (l <= r) {
            int mid=l+r>>1;
            if (check(mid)) {
                l = mid + 1;
                ans = mid;
            } else {
                r = mid-1;
            }
        }
        cout<<ans;
        return 0;
    }
    

    https://www.nowcoder.com/discuss/607769

  • 相关阅读:
    vsc连接wsl时node进程占用cpu高
    LifeCycles属性
    让kbmMWClientQuery更新视图
    uniGUI免登录的实现
    uniGUI 快速定制手机端输入界面布局
    更新IDE的背景
    Delphi 10.4.1来了
    如何修改windows服务器最大的tcp连接数
    uniGUI怎么升级jquery
    【转】UniGUI的布局使用说明
  • 原文地址:https://www.cnblogs.com/wdt1/p/14509815.html
Copyright © 2011-2022 走看看