Monthly Expense OpenJ_Bailian - 4135 -二分答案-(最大值最小化)

  • Monthly Expense

  •  OpenJ_Bailian - 4135
  • 最大值最小化:

  • 我们假设x为最小的最大值,那么x-1是不满足条件的,x+1是满足条件的。但他不满足最小,

  • 假设我们左边界是L,右边界是R,我们二分一个答案ans,ans为第一个满足条件的数

  • 题意:共n个月,给出每个月的开销.将n个月划分成m个时间段,求m个时间段中开销最大的时间段的最小开销值。

  • 思路:二分答案,答案可能范围为单个最大值——所有值的sum,不断二分去把最大值最小化

  • check检验这种最大值情况符不符合:如果连续求和过程中超过了当前枚举的答案那么久cnt++,now=0;

  • 最终看看能不能在题目给定的m次之内把他们都合法的分开。

  • #include
    using namespace std;
    vectora;
    int n,m,l,x,r;
    bool check(int mid)
    {
        int cnt=0,now=0;
        for(int i=0; imid)return 0;
            if(now+a[i]>mid)
            {
                cnt++;
                now=0;
            }
            now+=a[i];
        }
        return cnt

     

你可能感兴趣的:(二分-排序)