感覺這題實在是妙哉,妙在如何去掉冗餘狀態。
首先我們可以發現除了空位和特殊位其他都是本質相同的,所以容易設出狀態fi,
j,x,
yf_
fi,j,x
,y表示使特殊位座標為(i,
j)
(i,j)
(i,j
),空位座標為(x,
y)
(x,y)
(x,y
)的最少時間,該dpdp
dp可以使用dfs
dfsdf
s或bf
sbfs
bfs轉移,時間複雜度為o(n
2m2)
o(n^2m^2)
o(n2m2
)。過不了,我們可以想怎麼去掉冗餘狀態。只有當空位在特殊位的上下左右時,特殊位才能移動,而空位是可以隨意移動的,那當空位在特殊位上下左右時,我們隨意把空位移走肯定是不優的。那我們就不把它移走,空位的座標只可能在四個地方,那就是特殊位的上下左右。故狀態變為fi,
j,k,
k∈[0
,3
]f_,k\in[0,3]
fi,j,k
,k∈
[0,3
],kk
k表示空位所在方向。
初始狀態可以先用bfs
bfsbf
s預處理出。這樣狀態之間的轉移代價並不相等,所以我們不能再使用bfs
bfsbf
s轉移,由於轉移邊較少,使用spf
aspfa
spfa
轉移,可以做到接近o(n
m)
o(nm)
o(nm
)的複雜度。
題解 P1979 華容道 Noip2013
小 b 最近迷上了華容道,可是他總是要花很長的時間才能完成一次。於是,他想到用程式設計來完成華容道 給定一種局面,華容道是否根本就無法完成,如果能完成,最少需要多少時間。小 b 玩的華容道與經典的華容道遊戲略有不同,遊戲規則是這樣的 在乙個 n mn times mn m 棋盤上有 n times ...
NOIp提高組 2013 花匠
果然,直接dp不做特殊條件判定時,資料規模到一定程度時,必定超時了 看了lrc 機房某大佬 的 if dp i 0 1 dp i 1 1 break 依然不知是何居心,猜測可能是滿足m 1不能同時滿足那個條件吧.想不出 接著進一步分析 受到以前有個題求序列連續和的啟發,我們可以這樣設計狀態 令f i...
NOIP2013提高組 花匠
花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g 1,g ...