Codeforces349C&&Codeforces348A
题目链接:http://codeforces.com/problemset/problem/348/A
题意:
n位朋友玩Mafia游戏,每一轮有1个supervisor和n-1个player,进行多轮Mafia,每1位朋友想做ai次player,要求满足所有朋友需要至少多少轮游戏?
题解:首先找出需求最多次的ai标记为maxa,总需求数为sum,每一次游戏会有一位非player(就是supervisor),那么sum/(n-1)(向上取整)就是每一位朋友平均能够做多少次player,取max(maxa,(sum-1)/(n-1))就是答案。
C++ code:
#define N 100001 #define max(a,b) a>b?a:b #include<stdio.h> int n; __int64 a[N],maxa,b,cnt,t,ans; int main() { int i,j; while(scanf("%d",&n)!=EOF) { maxa=0; cnt=0; ans=0; for(i=0;i<n;i++) { scanf("%I64d",&a[i]); if(maxa<a[i]) maxa=a[i]; } for(i=0;i<n;i++) { if(maxa>a[i]) cnt+=maxa-a[i]; } t=maxa-cnt; if(t<=0) { printf("%I64d\n",maxa); continue; } if(t%(n-1)) ans=t/(n-1)+1; else ans=t/(n-1); printf("%I64d\n",ans+maxa); } return 0; }
Python code:
n = input() a = map(int, raw_input().split()) print max(max(a), (sum(a)-1)/(n-1)+1)

浙公网安备 33010602011771号