• poj 3273 Monthly Expense 二分


    题目链接:http://poj.org/problem?id=3273

    因为规定天数连续 所以从前到后贪心即可 裸二分

    二分专题的特点:

    1.很容易写

    2.很容易写错

    所以要注意:

    上下界的取值是否太大太小 加起来会不会爆

    最后能不能跳出循环

    当对中值进行判定以后 应该如何调整lb和ub

    注意lb那个地方应该赋值为mid+1 否则会T到死

    #include <cstdio>
    #include <cstdlib>
    #include <ctime>
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <stack>
    #include <set>
    #include <queue>
    #include <vector>
    
    using namespace std;
    
    typedef long long ll;
    
    const int maxn = 100010;
    const double eps = 1e-7;
    
    int a[maxn];
    
    
    int main()
    {
        //freopen("in.txt", "r", stdin);
    
        int n, m;
        scanf("%d%d", &n, &m);
    
        int maxnum = 0;
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
            maxnum = max(maxnum, a[i]);
        }
    
        int ub = 0x3fffffff;
        int lb = maxnum;
    
        while(ub > lb)
        {
            int mid = (ub + lb) / 2;
    
            int cnt = 0;
            int sum = 0;
            for(int i = 0; i < n; i++)
            {
                if(sum + a[i] > mid)
                {
                    cnt++;
                    sum = a[i];
                    continue;
                }
    
                sum += a[i];
            }
            cnt++;
    
            if(cnt <= m)
                ub = mid;
            else
                lb = mid + 1;
        }
    
        printf("%d
    ", ub);
    
        return 0;
    }
  • 相关阅读:
    CVE-2019-0708
    windows powershell的常用命令
    sqli-lab(8)
    DVWA--CSP Bypass
    认清自己
    sqli-libs(7)
    DVWA--upload
    sqli-labs(6)
    python学习之路(22)
    BZOJ2434:[NOI2011]阿狸的打字机——题解
  • 原文地址:https://www.cnblogs.com/dishu/p/4299002.html
Copyright © 2020-2023  润新知