AcWing1064 騎士(狀壓DP)題解

2021-10-07 07:31:22 字數 1098 閱讀 1984

題目傳送門

題目描述

在 n×n 的棋盤上放 k 個國王,國王可攻擊相鄰的 8 個格仔,求使它們無法互相攻擊的方案總數。

輸入格式

共一行,包含兩個整數 n 和 k。

輸出格式

共一行,表示方案總數,若不能夠放置則輸出00。

資料範圍

1 ≤ n ≤ 10

0 ≤ k ≤ n^2

輸入樣例:
3 2

輸出樣例:
題解:

狀態壓縮dp:

dp[ i ] [ j ] [ k ]表示第 i 行,狀態為 j , 放國王的個數為k時的方案數

其中j用二進位制表示, 1表示該位置上放國王,0表示該位置上不放國王

#include

using namespace std;

const

int n =12;

typedef

long

long ll;

ll d[12]

[1<< n]

[110];

int n, m;

int num[

1<< n]

, temp[

1<< n]

;int

get_ones

(int x)

return cnt;

}int

main()

d[0]

[0][

0]=1

;for

(int i =

1; i <= n; i++)}

}}ll ans =0;

for(

int i =

0; i < t; i++

)//輸出所有狀態的總和

ans +

= d[n]

[i][m]

; cout << ans << endl;

return0;

}

ACwing1064小國王 互不侵犯

題目描述 在 n times n 的棋盤上放 k 個國王,國王可攻擊相鄰的 8 個格仔,求使它們無法互相攻擊的方案總數。輸入格式 共一行,包含兩個整數 n 和 k 輸出格式 共一行,表示方案總數,若不能夠放置則輸出 0 資料範圍 1 le n le 10 0 le k le n 2 輸入樣例 3 2...

loj 10170騎士 狀壓DP

在n n 1 n 10 的棋盤上放k 0 k n n 個國王 可攻擊相鄰的8 個格仔 求使它們無法互相攻擊的方案總數。輸入檔案僅一行為兩個整數n和k。輸出檔案僅一行為方案總數,若不能夠放置則輸出0。3 2 樣例輸入2 4 4 樣例輸出2 79一眼狀壓,用1表示國王 話說真的不知道這個翻譯在幹什麼,到...

AcWing92 dfs 遞迴 狀壓

題目描述 從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入格式 輸入乙個整數n。輸出格式 每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。本題有自定義校驗器 spj 各行 不同方案 之間的順序任意。資料範圍 1 ...