SCOI2005 互不侵犯

2022-05-26 06:54:10 字數 1024 閱讀 1383

在n×n的棋盤裡面放k個國王,使他們互不攻擊,共有多少種擺放方案

國王能攻擊到它上下左右,以及左上左下右上右下八個方向上附近的各乙個格仔,共8個格仔

說實話,之前就一直想寫狀壓的部落格了,奈何一直沒有時間搞

互不侵犯應該是最經典的狀壓題目了

狀壓的本質就是用乙個二進位制串表示當前行的狀態

所以我們列舉二進位制串,判斷它是否合法

bool check(int i) 

for(register int i=0;i<=maxn;++i)//列舉每一種狀態

}

接著按行列舉,更新它的狀態

for(register int i=2;i<=n;++i)//列舉每一行 

} }}

統計答案

for(register int i=1;i<=maxn;++i)

ans+=dp[n][i][m];

總**:

#include#define ll long long

using namespace std;

int n,m,cnt,can[(1<<13)];

ll ans=0,dp[15][(1<<13)][90];//第i行,狀態的下標為j,k個國王

bool check(int i)

bool check(int x,int y)

int getnum(int sit)

return res;

}templateinline void read(t &res)

int main()

} for(register int i=2;i<=n;++i)//列舉每一行

}} }

for(register int i=1;i<=maxn;++i)

ans+=dp[n][i][m];

printf("%lld\n",ans);

}

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的題是乙個套路 具體實現也基本一樣 就是記錄的狀態...