AcWing 913. 排队打水 (排序不等式)
AcWing 913. 排队打水
有 n n n 个人排队到 1 1 1 个水龙头处打水,第 i i i 个人装满水桶所需的时间是 t i t_{i} ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?
输入格式
第一行包含整数 n n n。
第二行包含 n n n 个整数,其中第 i i i 个整数表示第 i i i 个人装满水桶所花费的时间 t i t_{i} ti
输出格式
输出一个整数,表示最小的等待时间之和。
数据范围
1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^{5} 1≤n≤105
1 ≤ t i ≤ 1 0 4 1 \leq t_{i} \leq 10^{4} 1≤ti≤104
思路
将时间按照从小到大的顺序排队,总时间最小
证明:反证法
假设 t i > t i + 1 t_{i} > t_{i+1} ti>ti+1
有 t i ∗ ( n − i ) + t i + 1 ∗ ( n − i − 1 ) t_{i}*(n-i) + t_{i+1}*(n-i-1) ti∗(n−i)+ti+1∗(n−i−1)①
交换 t i t_{i} ti和 t i + 1 t_{i+1} ti+1 有 t i + 1 ∗ ( n − i ) + t i ∗ ( n − i − 1 ) t_{i+1}*(n-i)+t_{i}*(n-i-1) ti+1∗(n−i)+ti∗(n−i−1)②
①-②得 t i − t i + 1 t_{i} - t_{i+1} ti−ti+1 而 t i > t i + 1 t_{i} > t_{i+1} ti>ti+1 ∴ \therefore ∴交换后总时间变小
若想使总时间最小 则 t i t_{i} ti应该从小到大排序 即 t i < t i + 1 t_{i}<t_{i+1} ti<ti+1
代码
#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;
}
AcWing 913. 排队打水 (排序不等式)相关推荐
- 排序不等式 AcWing 913. 排队打水
排序不等式 AcWing 913. 排队打水 原题链接 AcWing 913. 排队打水 算法标签 贪心 排序不等式 思路 1 将nnn个人装满水桶所需的时间从小到大进行排序 2 从前往后枚举每一个人 ...
- 贪心:排队打水—排序不等式
题目: AcWing 913. 排队打水 有 n 个人排队到 1 个水龙头处打水,第 i 个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小? 输入格式 第一行包 ...
- [排序不等式] 排队打水(排序不等式+贪心)
文章目录 0. 前言 1. 排序不等式+贪心 0. 前言 经典的排序不等式问题,也是一个简单的小学数奥问题. 1. 排序不等式+贪心 913. 排队打水 贪心思路: 让最墨迹的人最后打水,即从小到大排 ...
- 贪心:Huffman树(合并果子)、排序不等式(排队打水)
Huffman树 AcWing 148. 合并果子 在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆. 达达决定把所有的果子合成一堆. 每一次合并,达达可以把两堆果子合并 ...
- ACM - 贪心 - 基础(区间问题 + Huffman树 + 排序不等式 + 绝对值不等式 + 推公式)
贪心 经典母题 1.区间问题 AcWing 905. 区间选点 AcWing 908. 最大不相交区间数量 AcWing 906. 区间分组 AcWing 907. 区间覆盖 2.Huffman树 A ...
- 【模板题】贪心-排序不等式
一.AcWing 913. 排队打水 [题目描述] 有nnn个人排队到111个水龙头处打水,第iii个人装满水桶所需的时间是tit_iti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小? ...
- 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子
耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...
- 贪心——排序不等式——排队打水
排队打水 总共n人 T=t1*(n-1)+t2*(n-2)+--+tn 按从小到大的顺序排序,等待时间最小 #include <iostream> #include <algorit ...
- 第六章贪心(三):排序不等式、绝对值不等式
第六章贪心(三):排序不等式.绝对值不等式.推公式 AcWing 913:排队打水 题目 有 n 个人排队到 1 个水龙头处打水,第 i 个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能 ...
最新文章
- DataGrid删除确认及Item颜色交替
- 浅谈“领域驱动设计”
- ORACLE 计算时间相减间隔
- 图像文档变形恢复DewarpNet
- 51单片机之串口通讯应用实例(逻辑分析仪调试)
- 配置php7.2.4支持swoole2.1.1扩展
- 用js来实现那些数据结构01(数组篇01-数组的增删)
- 任意目录下启动tomcat
- 【生信进阶练习1000days】day15-SRAdbV2包
- 最详细的Android SDK下载安装及配置教程
- 【MySQL】exists与in的比较
- 总结js中关于路径的写法
- 计算机国培目标与计划,2018国培个人研修计划
- android 程序闪退 log,应用闪退log日志。。
- Camera360 一款强大的手机拍照必备软件
- c语言响铃编程,C语言C加加编程新手快速入门基础学习
- 淘宝 聚划算 整点免费 支付宝延时时间1秒
- c++最佳情侣身高差(来测一测)
- xml配置php虚拟路径,apache增加虚拟路径和映射中文路径
- 怎么删除w7桌面计算机图标,Win7系统桌面上图标删不掉怎么办?