SGU 223 國王 狀壓DP

2022-06-12 23:30:17 字數 1026 閱讀 4624

在 n×n

'>n×n 

的棋盤上放 k

'>k

k 個國王,國王可攻擊相鄰的 8

'>8

8 個格仔,求使它們無法互相攻擊的方案總數。n×

n'>狀壓dp是一種比較暴力的dp。n×

n'>首先dp[i][j][k]表示前i行放置k個國王,且當前行狀態是j的方案數。n×

n'>轉移方程 dp[i][j][k] = dp[i - 1][m][k - sum[k]]n×

n'>sum[k]表示第k個合法狀態的放置的國王個數。n×

n'>什麼叫第k個合法狀態。由於每行的放置規則是有限的,所以可以預處理出合法狀態記錄到sum裡和乙個st陣列表示第i個合法狀態的國王個數。n×

n'>最後只要求 1 <= i <= cnt 下dp[n][i][k] cnt是合法狀態數

ll dp[12][1

<< 10 + 5][105

];int st[1

<< 10 + 5

];int sum[1

<< 10 + 5

];bool check(int x, int

y) int

main()

}for (int i = 1; i <= cnt; i++) dp[1][i][sum[i]] = 1

;

for (int i = 2; i <= n; i++)

for (int j = 1; j <= cnt; j++)

for (int m = sum[j]; m <= k; m++)

for (int jj = 1; jj <= cnt; jj++)

if (check(st[j], st[jj])) dp[i][j][m] += dp[i - 1][jj][m -sum[j]];

ll sum = 0

;

for (int i = 1; i <= cnt; i++) sum +=dp[n][i][k];

put(sum);

}

SGU223 狀態壓縮

下午花了兩個小時把yali中學 陳丹琦的 基於連通性狀態壓縮的動態規劃問題 啃完,插頭dp還真是個麻煩的東西。相較sgu223算乙個水題了,給定n n的棋盤,擺放m個不相互攻擊的棋子,棋子攻擊範圍為相鄰8個位置。求方案數。dp i j k 第i行,狀態為j,放了k個棋子的方案數,dp i j k s...

習題 國王(狀壓DP)

題目 記憶體限制 64 mib時間限制 500 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 提交提交記錄 返回比賽 題目描述 原題來自 sgu 223 在 n n的棋盤上放k 個國王,國王可攻擊相鄰的 8個格仔,求使它們無法互相攻擊的方案總數。輸入格式 只有一行,包含兩個整數 n 和k 輸出...

狀壓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 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...