CF348A Mafia


题目传送门

思路:

首先累计每个人所想玩的局数得出每个人要参与游戏总数 $s$

由于每一局游戏共需要 $n-1$ 人参与,所以需要有 $ \text{ceil}(\frac{s}{n-1}) $ 局游戏

因为游戏总局数不能少于想要参加的人的最多次数 $maxx$,所以用 $\max$ 函数输出最大值即可

注意:

  1. 向上取整要强制转换为 与 $\max$ 函数中另一个数相同的类型,因为 $\max$ 函数只能比较两个相同类型的大小(手写也不是不行)

  2. 要开 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;
}

文章作者: alex_liu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 alex_liu !
  目录