2014浙大ACM網絡省賽-----Talented Chef問題(Problem -C)

本題代碼神之一Y,代碼如下:

#include<cstdio>

int main()
{
    int t,n,m;
    int num;
    scanf("%d",&t);
    for(int i=0;i<t;i++)
    {
        int max=0,sum=0;
        scanf("%d%d",&n,&m);
        for(int j=0;j<n;j++)
        {
            scanf("%d",&num);
            if(max<num) max=num;
            sum+=num;
        }
        int average=sum/m;
        if(average*m<sum) average++;
        if(average>max) printf("%d\n",average);
        else printf("%d\n",max);
    }
    return 0;
}

對於給出的每個盤子的步驟數目有如下規律:若是盤子步驟數目的極差很大的時候(比如是100,1,M的值爲2,花費的時間就是100),此時該廚師花費的主要時間是在最長步驟的那盤菜上面。若是對於所有的盤子的步驟數目都處於很平均時,該廚師花費的時間就是將所有時間平攤在沒個盤子上(比如2,2,2,M爲2,花費的時間就是3)。而對於一般的情況(比如1,2,3,4,5,6,7,8,9,10,M爲6,花費的時間{55/6}**=10),對於該算法的證明,希望得到大神的講解~~(本人純屬靈機一動,然後就A了!)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章