CF452D Washer, Dryer, Folder 题解
思路
由于每个洗衣机的用时都是一样的,不妨规定按照【第
用
对于第
考虑到中途不能停留,所以结束时间
然后更新
答案为洗完最后一件衣服的结束时间。
复杂度分析
- 时间复杂度:
\mathcal{O}(k+n_1+n_2+n_3) 。 - 空间复杂度:
\mathcal{O}(n_1+n_2+n_3) 。
AC 代码(Golang)
package main
import . "fmt"
func max(a, b int) int { if b > a { return b }; return a }
func main() {
var k, n1, n2, n3, t1, t2, t3, finish int
Scan(&k, &n1, &n2, &n3, &t1, &t2, &t3)
f1 := make([]int, n1)
f2 := make([]int, n2)
f3 := make([]int, n3)
for i := 0; i < k; i++ {
finish = max(max(f1[i%n1]+t1+t2+t3, f2[i%n2]+t2+t3), f3[i%n3]+t3)
f1[i%n1] = finish - t2 - t3
f2[i%n2] = finish - t3
f3[i%n3] = finish
}
Print(finish)
}