AcWing 913. 排队打水 (排序不等式)

简介: 笔记

有 n 个人排队到 1个水龙头处打水,第 i 个人装满水桶所需的时间是 t i,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?


输入格式


第一行包含整数 n。


第二行包含 n个整数,其中第 i个整数表示第 i个人装满水桶所花费的时间 t i


输出格式


输出一个整数,表示最小的等待时间之和。


数据范围


5.png


思路


将时间按照从小到大的顺序排队,总时间最小


证明:反证法6.png


代码


#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 100010;
int a[N], n;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
  }
  sort(a, a + n);
  LL res = 0;
  for (int i = 0; i < n; ++i)res += a[i] * (n - i - 1);
  cout << res << endl;
  return 0;
}
目录
相关文章
|
3月前
|
算法 测试技术 C#
【单调队列】LeetCode1499:满足不等式的最大值
【单调队列】LeetCode1499:满足不等式的最大值
【单调队列】LeetCode1499:满足不等式的最大值
|
7月前
|
人工智能
【动态规划刷题 11】等差数列划分&& 最长湍流子数组
【动态规划刷题 11】等差数列划分&& 最长湍流子数组
|
17天前
|
算法 测试技术 C#
【对顶队列】【中位数贪心】【前缀和】3086. 拾起 K 个 1 需要的最少行动次数
【对顶队列】【中位数贪心】【前缀和】3086. 拾起 K 个 1 需要的最少行动次数
|
3月前
|
算法 测试技术 C#
【贪心算法】【中位贪心】LeetCode:100123.执行操作使频率分数最大
【贪心算法】【中位贪心】LeetCode:100123.执行操作使频率分数最大
|
4月前
【每日一题Day355】LC1402 做菜顺序 | 贪心+排序
【每日一题Day355】LC1402 做菜顺序 | 贪心+排序
16 0
|
4月前
【每日一题Day223】LC1130叶值的最小代价生成树 | 贪心 区间dp
【每日一题Day223】LC1130叶值的最小代价生成树 | 贪心 区间dp
25 0
|
4月前
【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
17 0
|
11月前
|
存储 人工智能
归并排序例题——逆序对的数量
做道简单一点的题巩固一下
【每日一题Day73】LC2037使每位学生都有座位的最少移动次数 | 排序+贪心
思路:要使总移动次数最少,那么要将每个学生移动至离其最近的座位,因此将座位和学生的位置进行升序排序,每个学生需要的移动次数即为对应位置相减,累加返回最终结果
70 0
leetcode-每日一题1403. 非递增顺序的最小子序列(贪心)
时间复杂度:O(n logn) 其中n时数组长度,对数组进行排序需要O(n logn)的时间,对数组进行遍历需要O(n)的时间
75 0
leetcode-每日一题1403. 非递增顺序的最小子序列(贪心)