zoukankan      html  css  js  c++  java
  • Codeforces Round #540 (Div. 3)--1118D2

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

    和easy version的主要区别是,数据增加了。

    easy version采用的是线性查找,效率低

    在这里采用binary search就可以了

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    vector<int> num;
    int C(int d){
        int sum=0;
        for(int i=0;i<n;i++){
            sum+=max(num[i]-i/d,0);
            if(sum>=m)
                return 1;
        }
        return 0;
    }
    int main(){
        cin>>n>>m;
        num.resize(n);
        for(int i=0;i<n;i++){
            cin>>num[i];
        }    
        sort(num.rbegin(),num.rend());
        int l=1,r=n;
        while(r-l>1){
            int mid=(l+r)>>1;
            if(C(mid))
                r=mid;
            else
                l=mid;
        }
        if (C(l)) cout << l << endl;
        else if (C(r)) cout << r << endl;
        else cout << -1 << endl;
        return 0;
    }
  • 相关阅读:
    babel的使用及安装配置
    npm install卡顿问题
    盒模型
    安全性
    字符串方法
    vue
    CSS3
    重载运算符
    装箱拆箱
    模板库
  • 原文地址:https://www.cnblogs.com/albert67/p/10414426.html
Copyright © 2011-2022 走看看