首页 > 其他 > 详细

CodeForces 349C. Mafia(二分)

时间:2020-07-10 13:03:50      阅读:59      评论:0      收藏:0      [点我收藏+]

题意:有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(二分)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!