zoukankan      html  css  js  c++  java
  • Codeforces

    https://codeforces.com/problemset/problem/1118/D2

    也是很好想的一个二分啦。

    验证m的可行性的时候,肯定是把最多咖啡因的咖啡先尽可能平均分到每一天,因为同一天内调换喝咖啡的顺序只会非增,而且平均分更优是显然的。

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    
    int n,m;
    int a[200005];
    
    int ok(int mi){
        ll sum=0;
        for(int i=0;i<n;i++){
            sum+=max(0,a[i]-i/mi);
        }
        if(sum>=m)
            return 1;
        else
            return 0;
    }
    
    int binary(){
        int l=1,r=1e9,m;
        while(1){
            m=(l+r)>>1;
            if(l==m){
                if(ok(l)){
                    return l;
                }
                else if(ok(r)){
                    return r;
                }
                else{
                    return -1;
                }
            }
            if(ok(m)){
                r=m;
            }
            else{
                l=m+1;
            }
        }
    }
    
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        sort(a,a+n,greater<int>());
    
        printf("%d
    ",binary());
    }
  • 相关阅读:
    Linux各目录的意义
    LinuxVIM编辑器用法
    Linux自动同步时间
    bash的基本特性
    shell-homeworkone
    shell
    笔记
    Python-1-Day
    Linux使用BIND提供域名解析服务
    Linuxautofs自动挂载服务
  • 原文地址:https://www.cnblogs.com/Yinku/p/10414622.html
Copyright © 2011-2022 走看看