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

题目描述
有 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[

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值