[Codeforces] 1065 Three pieces

LINK:http://codeforces.com/contest/1065/problem/D

SOL:http://codeforces.com/contest/1065/submission/44892468

FST掉的一題。
我原本的寫法是DP,然後每次轉移的時候都BFS一次,然後寫到快瘋掉,賽中就鏘了一百多行,然後就FST了QAQ

之後好長一段時間因為這題感覺很麻煩所以就一直放著,直到後來看了別人的code後才發現原來只是我的寫法很複雜而已@@

事實上,可以將座標(x, y)、棋子編號為0, 1, 2,將所有狀態寫成( ( x*n + y )*3 + 棋子編號 ),然後就可以建出一張圖,處理只換一次棋子、只走一步的所有可能後,再用floyd warshall做全點對最短距離,接著再好好DP就OK了。

話說floyd warshall那裏應該可以更好的,因為我其實只要求從第 i 格走到第 i+1 格的不同棋子間的最短路徑就好了,所以其實是可以用dijkstra,又或者雖然沒研究過,不過好像可以用0-1DFS?

至今仍然不確定為何會FST QAQ

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題