洛谷P2578 ZJOI2005 九數碼遊戲

2021-08-28 22:16:09 字數 533 閱讀 3462

乙個有 神器 神奇操作的八數碼

直接逆向bfs,對於每種狀態,判重and記錄擴充套件到他的id,以及給他乙個id,搜到輸入的局面後,倒序輸出就行了

#include#include#include#include#include#includeusing namespace std;

struct emm

}ad,no,t[1000500];

priority_queueq;

int a[4][4],cnt;

bool f[9][9][9][9][9][9][9][9];

inline void cha1()

inline void cha2()

inline bool che()

inline void bfs()

return ;

}signed main()

if (!e) break;

puts("");e=t[e].la;

} return 0;

}

洛谷 P2577 ZJOI2005 午餐

這道題目比較難想。演算法 貪心 dp 容易想到貪心 吃飯慢的先打飯節約時間,所以先將人按吃飯時間從大到小排序。然後就是dp了 首先,應該想到f i j k 前i個人,在1號視窗打飯總時間j,在2號視窗打飯總時間k 當然,這樣會爆空間,所以想到去掉一維。f i j 表示前i個人,在1號視窗打飯總時間j...

洛谷P2577 ZJOI2005 午餐

挺棒的一道dp。貪心策略容易想到。直接按吃飯時間從大到小排序即可。重點是dp。可以設方程為 f 前 i 人 佇列1的時間 j 然後加上乙個常見的滾動陣列套路。方程的轉移還是很有意思。include include include include using namespace std const i...

洛谷 P2577 ZJOI2005 午餐

首先,比較容易想到的一點是應該把所有人按吃飯時間從大到小排個序,讓吃飯時間長的人優先打飯,這樣會是最優的。其次,設f i j k 表示前i個人在一號隊打飯時間為j二號隊打飯時間為k時的總時間的最優解 有點繞 於是乎,轉移方程就是 f i j k min max f i 1 j a i k j b i...