狀壓 博弈dp

2021-10-09 10:36:23 字數 440 閱讀 3329

傳送門:

題目大意:

遊戲的雙方能在 1 ~ n 之間選擇乙個數加到sum上,每個數只能選擇一次。誰先將sum 變得 >= max , 誰就贏了。現在問你,給定 n , sum.先手是否能贏(兩方採取最優策略)。 (n <= 20 , max <= 300).

思路:很容易發現n 很小,可以直接狀態壓縮。但是有乙個問題。直觀的想法是開二維陣列,這樣時間複雜度依舊過不去。

發現乙個很重要的性質:令狀態s為當前已經選走的數的集合,當選走的集合被確定了,那麼當前的sum也被唯一確定了。所以只需要一維就能表徵兩個屬性.

dp[i]的含義為: 當已經選走的數的集合為i時,我先手是否能贏。然後決策個數就是二進位制中0的個數。

如此一來,採用記憶化搜尋,dfs存兩維,而dp只需要記錄一維即可。遞迴出口即為 當 now >= max.

hdu4778 狀壓dp 博弈

題目大意 有g種不同顏色的小球,b個袋子,每個袋子裡面有若干個每種小球 兩人輪流取袋子,當袋子裡面的同色小球有s個時,會合併成乙個魔法球,並被此次取袋子的人獲得 成功獲得魔法球的人可以再次取 求二者都進行最優策略之後兩人所得魔法球個數差 分析 博弈,資料很小,自然想到了可以搜尋所有狀態 然後從每一步...

狀壓dp 玉公尺田 狀壓dp

相關 強相關 327.玉公尺田 狀壓dp 小國王 狀壓dp 是井字形,本題是十字形。思路 狀態計算 時間複雜度 n 2 n 2n o n 22n 12 2 24n 2 n 2 n o n2 12 2 n 2n 2 n o n22n 12 224 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...

狀壓dp小記

鋪磚 題意 現有nm的一塊地板,需要用12的磚塊去鋪滿,中間不能留有空隙。問這樣方案有多少種 include using namespace std typedef long long ll const int maxn 1 11 int n,m,state ll dp 15 maxn s1表示本行...