题目描述
n个物品要依次经过3个机器被加工,给定每个物品3个工序的耗时Ai,Bi,Ci。其中 m a x ( B i ) < m i n ( C i ) max(Bi)<min(Ci) max(Bi)<min(Ci)
题解
因为我们一次做每一个工序,留一下再做不会更优。
假如我们知道了所有机器的排序,
f
[
i
]
[
j
]
f[i][j]
f[i][j]表示
i
i
i个机器的第
j
j
j个工序完成的时间则
f
[
i
]
[
j
]
=
m
a
x
(
f
[
i
]
[
j
−
1
]
,
f
[
i
−
1
]
[
j
]
)
f[i][j]=max(f[i][j-1],f[i-1][j])
f[i][j]=max(f[i][j−1],f[i−1][j]),也就是一条从
(
1
,
1
)
(1,1)
(1,1)到
(
n
,
3
)
(n,3)
(n,3)的最长路。因为
m
a
x
(
B
i
)
<
m
i
n
(
C
i
)
max(Bi)<min(Ci)
max(Bi)<min(Ci)所以这是一条只会拐下来一次然后走的线路。
明显这是一道贪心,常规贪心套路就是比较
i
,
j
i,j
i,j两个,因为任意两个交换并不会影响到其他的东西什么,因为只可能会拐下来一次,所以只要按这个排序
m
a
x
(
a
+
b
+
c
+
r
h
s
.
c
,
a
+
r
h
s
.
a
+
r
h
s
.
b
+
r
h
s
.
c
)
<
m
a
x
(
r
h
s
.
a
+
r
h
s
.
b
+
r
h
s
.
c
+
c
,
r
h
s
.
a
+
a
+
b
+
c
)
max(a+b+c+rhs.c,a+rhs.a+rhs.b+rhs.c)<max(rhs.a+rhs.b+rhs.c+c,rhs.a+a+b+c)
max(a+b+c+rhs.c,a+rhs.a+rhs.b+rhs.c)<max(rhs.a+rhs.b+rhs.c+c,rhs.a+a+b+c)即可