题目描述:假设有N个人要玩游戏,每轮游戏必须选出一个人当裁判,剩下的N-1个人为玩家,现在第i个人要求作为玩家至少进行A轮游戏,那么至少需要进行多少轮游戏才能满足所有人的要求。
主要思想:先找出想要玩游戏次数最多的人,设它想玩m局,则游戏最少要进行m次,再算出所有人要玩游戏的总局数sum,用m*N-sum即为所有人能当裁判的总次数,与游戏局数m进行比较,如果小于游戏局数,则需要继续增加游戏。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
if (n < 2)
return 0;
vector<int> A;
for (int i = 0; i < n; i++)
{
int tmp;
cin >> tmp;
A.push_back(tmp);
}
int m = *max_element(A.begin(), A.end());//玩游戏的最大次数
int sum=0;//总共要玩的局数
for (int i = 0; i < n; i++)
sum += A[i];
while ((n*m-sum)<m)
m++;
cout << m << endl;
return 0;
}