P1896 SCOI2005 互不侵犯

2022-04-30 01:03:10 字數 518 閱讀 9913

p1896 [scoi2005]互不侵犯

資料不大,時間複雜度很高也差不多能過。

使用狀壓dp

dp[i][j][k]表示到第i行,狀態為j,選了k個人

然後就是轉移,轉移的難點就是快速判斷

判斷的話,我們整體考慮。

然後乙個狀態是否有相鄰的國王。用它本身按位與它本身右移(左移),若結果為0,則說明無相鄰的國王,為正整數則說明有相鄰的情況

然後判斷兩個狀態是否可以接上是也如此操作

#include#include#includeint c[2000];

long long f[20][90][2000];

int calc(int data)

return res;

}int main()

} }long long ans=0;

for(int i=0;i<(1

printf("%lld",ans);

}

P1896 SCOI2005 互不侵犯

首先,養成乙個思路 資料這麼小?狀壓dp!然後翻題解可以這麼定義狀態 定義 dp i j k 為前 i 行中,第 i 行狀態為 j 前 i 行已放置 k 個國王的方案數。顯然一行的狀態只與前一行的有關,所以只需要記錄一行的狀態。但是一行的狀態好像很難存啊!難道複製乙個陣列進去嗎?其實,對於每乙個點,...

P1896 SCOI2005 互不侵犯

在n n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案。國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔。注 資料有加強 2018 4 25 只有一行,包含兩個數n,k 1 n 9,0 k n n 所得的方案數 輸入樣例 1 複製3 2 輸出樣例 1 複製...

P1896 SCOI2005 互不侵犯King

在n n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案。國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔。輸入格式 只有一行,包含兩個數n,k 1 n 9,0 k n n 輸出格式 所得的方案數 輸入樣例 1 3 2 輸出樣例 1 16 用二進位制壓縮狀態...