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} 1n105
1 ≤ t i ≤ 1 0 4 1 \leq t_{i} \leq 10^{4} 1ti104

思路

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

证明:反证法

​ 假设 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(ni)+ti+1(ni1)

​ 交换 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(ni)+ti(ni1)

①-②得 t i − t i + 1 t_{i} - t_{i+1} titi+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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《俞立.鲁棒控制-线性矩阵不等式理方法》是俞立所著的一本关于鲁棒控制以及线性矩阵不等式理方法的书籍。该书于2002年由清华大学出版社出版。 鲁棒控制是一种能够在参数不确定的情况下保持系统稳定性和性能的控制方法。在实际工程应用中,系统参数经常受到多种不确定因素的影响,例如外界干扰、模型误差等。而鲁棒控制则能够通过设计具有适应能力的控制器来应对这些不确定因素,从而提高系统的稳定性和鲁棒性。 线性矩阵不等式(LMI)是一种用于描述线性系统稳定性和性能的数学工具。在鲁棒控制中,通过将系统的数学模型表示为LMI形式,可以方便地进行系统分析和控制器设计。LMI理方法能够有效地应对系统参数不确定性,并且具有数值化求解等优势,因此被广泛应用于鲁棒控制领域。 《俞立.鲁棒控制-线性矩阵不等式理方法》一书详细介绍了鲁棒控制和LMI理方法的基本原理和理论基础。书中包含了大量的实例和案例分析,帮助读者更好地理解和掌握相关知识。此外,书中还介绍了一些优化算法和数值方法,用于求解LMI问题和设计鲁棒控制器。 该书是一本权威的、经典的鲁棒控制方面的著作,对于从事自动控制和系统工程领域的研究人员和工程师具有重要的参考价值。通过学习和应用该书中的鲁棒控制和LMI理方法,可以提高系统控制的稳定性和性能,并能有效地应对系统参数的不确定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzqwtc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值