SCOI2005 互不侵犯King

2022-05-20 01:17:40 字數 809 閱讀 3118

在n×n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案。國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔。

——by洛谷

顯然的棋盤模型的狀壓dp,故考慮對每行二進位制狀壓,狀壓為表示有無王的01串,再由題意得到如下的限制:

於是對於限制一,可在預處理中實現;對於二三,可在轉移時限制,得出狀態轉移方程:

f[i][j][l+c[j]]=σf[i-1][k][l];(i:當前行數;j:列舉本行所有可能狀態,l+c[j]:此時的王的個數,c[j]:狀態s[j]中王的個數)

然後對k進行限制,s[j]&s[k]==0,s[j]&(s[k]<<1)==0,s[j]&s[k]>>1)==0;之類的

需要注意的是:

總結:簡單的dp麼

**如下:

#includeusing

namespace

std;

long

long f[10][1000][100

];int s[100],c[100

];int

man;

intn,m;

void dfs(int ,int ,int ,int

);int

main()

void dfs(int now,int num,int ma,int

p)

for(i=0;i<=1;i++)

if(1-p>=i)

dfs(now+1,num+i*(1

<<(now-1)),ma+i,i);

}

祝ac喲;

SCOI2005 互不侵犯

在n n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案。國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔。只有一行,包含兩個數n,k 1 n 9,0 k n n 方案數3 2 同sgu223 include include include include ...

SCOI2005 互不侵犯

題目描述 在n n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案。國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔。輸入格式 只有一行,包含兩個數n,k 1 n 9,0 k n n 輸出格式 所得的方案數 ly最可愛啦 這題。想了5分鐘,寫了10分鐘,調了...

SCOI2005 互不侵犯

在n n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案。國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔。兩個數n,k 1 n 9,0 k n n 方案數。3 2果然啊 狀壓題都是乙個套路 和前面那個noi的題是乙個套路 具體實現也基本一樣 就是記錄的狀態...