本題代碼神之一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了!)。