ZOJ 3778 Talented Chef

来源:互联网 发布:mac联网恢复系统 编辑:程序博客网 时间:2024/05/16 18:13

题目链接:ZOJ 3778 Talented Chef

两份代码,一份是大神的思路,一份是我队友写的,感觉大神的二分思路很不好想,想象一个矩形,宽为m,长为时间,如果矩形内可以装得下sum,那么就可以,初始两个边界分别是最大值和sum。

#include <iostream>#include <stdio.h>#include <algorithm>using namespace std;int T, m, n;int main(){    scanf("%d", &T);    while(T--)    {        scanf("%d%d", &n, &m);        int tmp, _max;        long long sum, res, mid;        sum = _max = 0;        for(int i = 0; i < n; i++)        {            scanf("%d", &tmp);            _max = max(_max, tmp);            sum += tmp;        }        long long l = _max, r = sum;        while(l <= r)        {            mid = (l + r) >> 1;            if(mid * m >= sum)            {                res = mid;                r = mid - 1;            }            else                l = mid + 1;        }        printf("%lld\n", res);    }    return 0;}

#include<iostream>using namespace std;int main(){int T;cin >> T;while(T--){long long n,m;cin >> n >> m;int i, j;int ma = 0;long long s = 0;int tmp;for(i = 1; i <= n; i++){cin >> tmp;ma = max(ma, tmp);s += tmp;}long long t = s / m;if(s % m != 0)            t++;if(t <= ma)            t = ma;cout << t << endl;}return 0;}


0 0
原创粉丝点击