贪心算法_排队不等式_绝对值不等式_推公式
Posted 一只特立独行的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法_排队不等式_绝对值不等式_推公式相关的知识,希望对你有一定的参考价值。
排队不等式
原题链接
https://www.acwing.com/problem/content/915/
题目大意:
有 n 个人排队到 1 个水龙头处打水,第 i 个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?
思路:
从小到大排序,时间短的人先打水。
证明:
假设总时间为
r
e
s
=
t
1
(
n
−
1
)
+
t
2
(
n
−
2
)
+
.
.
.
+
t
n
(
n
−
n
)
res = t_1(n-1)+t_2(n-2)+...+t_n(n-n)
res=t1(n−1)+t2(n−2)+...+tn(n−n),如果res是最优解,一定有
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,交换
t
i
t_i
ti和
t
i
+
1
t_{i+1}
ti+1的打水顺序。
交换前:
r
e
s
1
=
.
.
.
+
t
i
(
n
−
i
)
+
t
i
+
1
(
n
−
i
−
1
)
+
.
.
.
res_1 = ...+t_i(n-i)+t_{i+1}(n-i-1)+...
res1=...+ti(n−i)+ti+1(n−i−1)+...
交换后:
r
e
s
2
=
.
.
.
+
t
i
+
1
(
n
−
i
)
+
t
i
(
n
−
i
−
1
)
+
.
.
.
res_2 = ...+t_{i+1}(n-i)+t_i(n-i-1)+...
res2=...+ti+1(n−i)+ti(n−i−1)+...
另
a
n
s
=
r
e
s
1
−
r
e
s
2
=
t
i
−
t
i
+
1
>
0
ans = res1-res2=t_i-t_{i+1}>0
ans=res1−res2=ti−ti+1>0,所以交换后总时间会变少,说明
r
e
s
1
res_1
res1不是最优解。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 1e5+5;
int a[N];
int main(){
int n;
cin>>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-1-i);
}
cout<<res<<endl;
return 0;
}
绝对值不等式
原题链接
https://www.acwing.com/problem/content/106/
题目大意:
在一条数轴上有 N 家商店,它们的坐标分别为
A
1
∼
A
N
A_1∼A_N
A1∼AN。
现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。
为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。
思路:
找n个点的中位数,这个数就是距离的最小值点。
证明:
设
r
e
s
=
∣
x
1
−
x
0
∣
+
∣
x
2
−
x
0
∣
+
.
.
.
+
∣
x
1
−
x
n
∣
,
x
i
res=|x_1-x_0|+|x_2-x_0|+...+|x_1-x_n|,x_i
res=∣x1−x0∣+∣x2−x0∣+...+∣x1−xn∣,xi表示商店位置
(
x
i
<
x
i
+
1
)
(x_i<x_{i+1})
(xi<xi+1),
x
0
x_0
x0表示货仓的位置。
若商店数量为偶数家:
r
e
s
=
(
∣
x
1
−
x
0
∣
+
∣
x
n
−
x
0
∣
)
+
.
.
.
+
(
∣
x
n
2
−
x
n
∣
+
∣
x
n
+
1
2
∣
)
res=(|x_1-x_0|+|x_n-x_0|)+...+(|x_{\\frac n 2}-x_n|+|x_{\\frac {n+1}2}|)
res=(∣x1−x0∣+∣xn−x0∣)+...+(∣x2n−xn∣+∣x2n+1∣)
若商店数量为奇数家:
r
e
s
=
(
∣
x
1
−
x
0
∣
+
∣
x
n
−
x
0
∣
)
+
.
.
.
+
∣
x
n
2
−
x
0
∣
res=(|x_1-x_0|+|x_n-x_0|)+...+|x_{\\frac n 2}-x_0|
res=(∣x1−x0∣+∣xn−x0∣)+...+∣x2nACM - 贪心(经典母题+POJ一些练习题)