思路:
首先累计每个人所想玩的局数得出每个人要参与游戏总数 $s$
由于每一局游戏共需要 $n-1$ 人参与,所以需要有 $ \text{ceil}(\frac{s}{n-1}) $ 局游戏
因为游戏总局数不能少于想要参加的人的最多次数 $maxx$,所以用 $\max$ 函数输出最大值即可
注意:
向上取整要强制转换为 与 $\max$ 函数中另一个数相同的类型,因为 $\max$ 函数只能比较两个相同类型的大小(手写也不是不行)
要开 long long
AC CODE:
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){//快读优化
int x=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
return x*f;
}
int n,x,maxx=-1,s=0;
signed main(){
n=read();
for(int i=1;i<=n;i++){
x=read();
s+=x;//累计每个人要参与游戏总数
maxx=max(x,maxx);//找到游戏中想要玩游戏局数最多的值
}
printf("%lld\n",max(maxx,(int)ceil(1.0*s/(n-1))));//套公式
return 0;
}