较复杂算法设计-排队接水

该博客讨论了一个关于n个人在水龙头前排队接水的问题,目标是找到一种顺序,使得所有人的平均等待时间最小。通过分析得出,平均等待时间最短的排队序列应为递增序列。博主介绍了如何利用Python的`L.sort()`函数进行排序,并利用`sum(L[index1:index2])`计算列表元素之和,以解决这个问题。
摘要由CSDN通过智能技术生成

题目描述
有 n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请找出这 n个人排队的一种顺序,使得n个人的平均等待时间最小。
输入
两行。 第一行,一个整数n,表示排队的人数。(n<=100) 第二行,用空格分隔的n个整数,分别表示每个人接水的时间Ti。
输出
两行。 第一行,为一种平均等待时间最短的排队顺序。 第二行,最短的平均等待时间(保留两位小数)。
输入样例1
10
56 12 1 99 1000 234 33 55 99 812
输出样例1
1 12 33 55 56 99 99 234 812 1000
291.90
样例解释
样例输出的排队方案每人等待的时间分别为:0、1、13、46、101、157、256、355、589、1401。求其平均值为291.90。

这道题主要难点就在于数学模型的建立,排队方案平均等待时间最短的隐含条件就是要求排队的序列是个递增序列,这样整体上的平均等待时间会是最短的(如果某个接水时间长的排在前面,则后面每个人的等待时间都要加上这个长的接水时间)
知识点:
1)L.sort()。排序(同类型元素排序),默认正序,正序也可以写作L.sort(reverse = False),倒序为L.sort(reverse = True)
2)sum(L[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值