南雅信息学奥赛吧 关注:11贴子:296
  • 0回复贴,共1

排队打水题解

只看楼主收藏回复

分析
•由于排队时,越靠前面的计算的次数越多(等待的时间越少),显然越小的排在越前面得出的结果越小(可以用数学方法简单证明,这里就不再赘述),所以这道题可以用贪心法解答。
基本步骤:
–将输入的时间按从小到大排序;–将排序后的时间按顺序依次放入每个水龙头的队列中;
--统计,输出答案。
伪代码如下:
scanf(“%d%d”,&n,&r);
输入T1,T2,…,Tn;
Sort() //对打水时间进行排序
memset(s,0,sizeof(s)); //初始化
j=0; min=0;
for (i=1;i<=n;++i) //用贪心法求解
{
j++;
if (j==r+1) j=1;
s[j]+=a[i];
min+=s[j];
}
printf(“%d”,min); //输出解答


1楼2016-12-17 10:35回复