zoukankan      html  css  js  c++  java
  • CodeForces 349C. Mafia(二分)

    题意:有n个人玩狼人杀,每个人都有最少的局数作为玩家,给定n个玩家至少玩的局数,求至少需要多少局狼人杀可以使所有人玩得尽心。

    分析:二分玩的局数x,对于每个人,都至少玩a[i]局,因此,二分的下界为(max(a[1], a[2], ..., a[n])),对于一个分界点,如果((n - 1) * x >= sum),那么这个点就是可行的,(n - 1)是每一局让n - 1个玩家当玩家,另一个玩家当上帝。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <cmath>
    #include <algorithm>
    
    using namespace std;
    using LL = long long;
    const int N = 100005;
    int a[N];
    LL sum[N];
    LL n;
    bool check(LL mid)
    {
    	if ((n - 1) * mid >= sum[n])
    		return true;
    	return false;
    }
    
    int main()
    {	
    	cin >> n;
    	int mx = 0;
    	for (int i = 1; i <= n; ++i) scanf("%d", &a[i]), mx = max(mx, a[i]);
    
    	for (int i = 1; i <= n; ++i) sum[i] = sum[i - 1] + a[i];
    
    	LL l = mx, r = 1e14;
    
    	while (l < r)
    	{
    		LL mid = l + r >> 1;
    		if (check(mid)) r = mid;
    		else l = mid + 1;
    	}
    
    	printf("%lld
    ", l);
    
    	return 0;
    }
    
  • 相关阅读:
    查询linux服务器有哪些IP在连接
    GitLab的使用
    jenkins安装
    GitLab安装
    Git for Linux
    PV并发UV
    yum安装zabbix故障报错
    redis备份恢复
    python递归-三元表达式-列表生成式-字典生成式-匿名函数-部分内置函数-04
    python函数闭包-装饰器-03
  • 原文地址:https://www.cnblogs.com/pixel-Teee/p/13278620.html
Copyright © 2011-2022 走看看