题目描述:
n个人一起排队接水,第i个人需要b[i]的时间来接水。
1 <= n <= 1000
0 <= b[i] <= 1000
同时只能有一个人接水,正在接水的人和没有接水的人都需要等待。
完成接水的人会立刻消失,不会继续等待。
你可以决定所有人接水的顺序,并希望最小化所有人等待时间的总和。
输入
第一行一个整数n
接下来n行,每行一个整数表示b[i]
输出
一行一个整数,表示所有人等待时间的总和的最小值
输入样例
3
1
2
3
输出样例
10
解题思路:
很容易想到贪心算法,贪心算法其实也就相当于是多次选择
我们的选择方法是将需要接水时间最少的人先接水,因为其他人(除开已接完水的人)需要等,也就是说到第i个人时,总共的时间需要加上(n + 1 - i) * b[i]的时间加1的原因是他自己本身也包括在内
1.我们先将b数组从小到大排序一下,也就得到b数组是递增的顺序
2.✍循环,把(n + 1 - i) * b[i]带进去求和
3.输出
核心代码:
都是核心🙃,直接看完整代码吧!
完整代码: