PACMAN喫毛豆

前幾天做這個題,由於寫的太差了,導致我寫了9個版本,直到最後一個才過掉……

 

數一下我的幾個版本:

ver1:考試時寫出的第一版,用的是一個動態規劃思想,但是調不對,放棄……

ver2:考試時寫的第二版,用網絡流建模,建模方法:若從i能到j,就從i向j連一條費用爲-1,容量爲1的邊。每個點向匯連一條容量爲1、費用爲0的邊,源向每個點連一條費用爲-1、容量爲1的邊,超級源向源連一條費用爲0、容量爲2的邊,求超級源到匯的費用流。WA掉。

ver3:看了解題報告後寫的一個版本,改了建模方法,拆點,若從i能到j,就從i+n向j連一條費用爲0,容量爲1的邊。i向i+n連一條費用爲-1、容量爲1的邊,其餘相同。

ver4:改了費用流算法,由原始對偶轉爲isap增廣。

ver5:又改了費用流算法,轉爲push-relabel增廣。

ver6:還改費用流算法,直接spfa增廣。

ver7:騙分策略,先求一條最長上升子序列,再在這條線左右分別求一條,WA掉。

ver8:迴歸最大流,直接手動增廣,先求一條最長上升子序列,模擬費用流增廣,直接構圖,不含0邊,然後用spfa求最短路,用的ver2的構圖方式,WA掉。

ver9:改變構圖,用ver3的構圖,終於AC……

 

附上源代碼:

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章