zoukankan      html  css  js  c++  java
  • codeforces Mafia

    /*
     * Mafia.cpp
     *
     *  Created on: 2013-10-12
     *      Author: wangzhu
     */
    
    /**
     * 每个人都想玩若干场,求至少需要玩几场才可以满足大家的需求。
     * 结果必然在某个人想玩的次数nmax(此人想玩的是最多的)与所有人想玩的次数和sum之间,
     * 故二分,left = nmax,right = sum,
     * 只需要需要玩的次数 * (总人数-1) >= 大家想玩的次数和即可
     *
     */
    #include<cstdio>
    #include<iostream>
    using namespace std;
    #define LL long long
    #define NMAX 100010
    int arr[NMAX];
    LL binary(int n, int nmax, LL sum) {
        LL mid = -1, left = nmax, right = sum;
        while (left <= right) {
            mid = left + (right - left) / 2;
            if (sum <= (mid * n)) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return left;
    }
    int main() {
        freopen("data.in", "r", stdin);
        int n, nmax;
        LL sum;
        while(~scanf("%d",&n)) {
            nmax = -1;
            sum = 0;
            for(int i = 0;i < n;i++) {
                scanf("%d",arr + i);
                if(nmax < arr[i]) {
                    nmax = arr[i];
                }
                sum += arr[i];
            }
            printf("%I64d
    ",binary(n - 1,nmax,sum));
    
        }
        return 0;
    }
  • 相关阅读:
    邮箱整理
    C++ Primer Plus 6 笔记(1)
    MySQL的远程链接
    MySQL的安装和使用
    nginx的反向代理和负载均衡
    linux--配置开发环境 --Nginx篇
    linux--配置开发环境 --Apache篇
    Linux -- 运维
    Linux
    使用宝塔面板部署tp5网站
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/3364584.html
Copyright © 2011-2022 走看看