码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 349C. Mafia(二分)

时间:2020-07-10 13:36:04      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:for   space   tor   print   就是   pac   玩家   max   def   

题意:有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\n", l);

	return 0;
}

CodeForces 349C. Mafia(二分)

标签:for   space   tor   print   就是   pac   玩家   max   def   

原文地址:https://www.cnblogs.com/pixel-Teee/p/13278620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!