2009年12月23日 星期三

ZOJ 3282 Go Downstairs

ZOJ 12月月賽題目。

給出每行有及僅有一個梯級,有或沒有金幣,幣值。每一行的梯級必然在上一行的梯級的左方或右方。一個在這張圖上的遊戲是這樣的﹕首玩者可以以費用選擇移去該行的梯級,麼次玩者會垂直掉到最接近的梯級,或離開地圖。如果該梯級有金幣的話也一併移掉。次玩者可以選擇修復剛移除的梯級(最多只能操作次),但不能修復原有的金幣。每當他走到有金幣的話他必定會取走。次玩者必然從最頂層出發。首玩者先操作。當次玩者跳離地圖,遊戲便結束。

問,若果金幣全屬首玩家所有,那麼在雙方採取最優策略底下,首玩家的損失最小是甚麼。

首先,不難留意這張圖可以化為有向無環圖。頂層梯級為出發點,並構造虛擬終點(即跳離地圖的狀態)。然後可以結論這道題目是Minimax題。簡單的動態規劃可以搞定。狀態為,當中是行數、是用了多少次修復,為玩者編號。轉移方程也很一般,不贅述。

此題唯一比較不足的地方是,應該容許兩層梯級可以共處同一垂直位置,而且應該考慮同一梯級可以重覆修復及移除。但是題目實際上如果移除了,某人就必須走下一級。這樣,下列的情況會得出不一樣的答案﹕

5 5 5 1 2
G....
G....
G....
G....
G....

(注意根據原題描述,此情況絕不會發生)