例9-1 UVa1025 A Spy in the Metro
每一个时刻都有3个决策:在当前车站等一下,从向左开的车上下车,从向右开的车上下车。
由于“坐在车上”这个状态不好表示,因此相应的替换为后两个状态。
由于要表示当前时刻和当前车站,因此用$dp(i, j)$表示当前在$i$时刻,$j$车站,最少的在车站的时间。这样的话整个dp的时间复杂度为$O(nT)$。
注意越界!
1 |
|
例9-2 UVa437 The Tower of Babylon
一个扩展性的矩阵嵌套问题?
我设计的状态是$dp(i, j, id)$表示塔的第$i$块砖为第$j$个方块,并且高的编号为$id$时塔的最高高度。这样由于每一次转移只需要枚举之前一次放上去的方块,就可以判断是否合法。
由于至多需要$2n$层,每一层的决策数都为$O(n)$,故总的时间复杂度为$O(n^2)$。
1 |
|
例9-5 UVa12563 Jin Ge Jin Qu hao
先对前$t-1$秒跑一个背包,然后再检查一下最多的方案和对应的时间,并且加上劲歌金曲即可。
原因是因为劲歌金曲唱了一定比不唱好,所以$t$要减掉一。
1 |
|
v1.5.2