uva 11008 狀態壓縮 記憶化搜尋

2022-09-16 15:00:19 字數 885 閱讀 2288

這題屬於狀態壓縮dp中比較基礎的一題,經過仔細分析後我們發現此題雖然座標範圍較大,但是點比較少最多才16個很容易想到用狀態壓縮。dp[x]表示當前樹的狀態最少要轉移的次數(砍的次數)。具體狀態轉移由於他狀態轉移的順序比較亂所以用的是記憶化搜尋。起始狀態是(1<**如下:

1 #include 2 #include 3 #include 

4using

namespace

std;56

int n, kk, ans, dp[1000000]; //

狀態壓縮陣列一共2^16個狀態

78 typedef struct

pointp;

1112 p p[20

];13

14//

判斷三點是否共線

15bool isline(int i,int j,int

k)16

2122

23int judge(int

x)24

30return

ret;31}

3233

void

init()

3439 ans = 20

;40 memset(dp, -1, sizeof

dp);41}

4243

int solve(int

x)44

6061

}62 ret = min(ret, solve(tx)+1

);63}64

}65}66

return dp[x] =ret;67}

6869

intmain()

7085

return0;

86 }

交換遊戲 狀態壓縮 記憶化搜尋

題目描述 一列上有12個孔,這12個孔中有些孔被遮擋住了。假定我們用 來表示沒被遮擋住的孔,用 o 來表示被遮擋住的孔。如果相鄰的三個孔有兩個孔被遮擋,並且被遮擋的兩個孔相鄰,就是 oo 和 oo 對於這樣的三個孔,我們可以將中間的孔的遮擋物移開,代價是將一端的遮擋物移到另一端沒有被遮擋的孔上面。對...

百練 4124 狀態壓縮 記憶化搜尋

傳送門 題意就不說了.題目要求是一定是從標號1出發,最後到達標號n,中間不重複的經過完其他島.那麼問題就是如何搜尋.中間有14個點,那麼最壞的情況就是14 中情況,這樣肯定是會超時的.所以我們需要剪枝,因為我們可以發現中途到達某個點時,如果此時的深度大於了曾經經過的點的深度或者目標點的深度,那麼直接...

狀態壓縮 uva11795

題意 第一行資料總數 接下來輸入機械人個數 再一行告訴你人能殺死哪些機械人,再n行告訴你機械人的 能怎麼互相殺死 思路 狀態壓縮 dp 偽轉移方程 dp 當前狀態 sum,其中i屬於 0,n 批註比較多的 includeusing namespace std int attack 17 每個機械人能...