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)

 

posted @ 2013-12-26 13:25  CrazyForAC  阅读(216)  评论(0)    收藏  举报