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

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

    能做完的天数最大不超过n,因为假如每天一杯咖啡,每杯咖啡容量大于1

    首先对容量进行从大到小的排序,

    sort(num.rbegin(),num.rend());
    sort(num.begin(),num.end(),greater<int>());
    都可以

    然后遍历每一天,当第i天的时候,选出i个容量最大的分配到每一天,如果还没写完,继续选择i个最大的,但是由题意容量需要进行衰减,衰减的量为j/i(也就是把咖啡以i为单位分成了好多组,相当于减去了组号)


    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int n,m;
        cin>>n>>m;
        vector<int> num(n);
        for(int i=0;i<n;i++){
            cin>>num[i];
        }    
        sort(num.rbegin(),num.rend());
        for(int i=1;i<=n;i++){
            int sum=0;
            for(int j=0;j<n;j++){
                sum+=max(num[j]-j/i,0);
            }
            if(sum>=m){
                cout<<i<<endl;
                return 0;
            }
        }
        cout<<-1<<endl;
        return 0;
    }
  • 相关阅读:
    with异常
    内建函数的重写
    布尔测试函数重写
    函数重写
    类中的对象属性管理函数
    类中的迭代器__iter__
    多继承
    多态
    封装
    深入理解Java:类加载机制及反射
  • 原文地址:https://www.cnblogs.com/albert67/p/10411803.html
Copyright © 2011-2022 走看看