SCOI2005 互不侵犯King (狀壓DP)

2021-10-21 12:18:09 字數 746 閱讀 2169

給乙個n*n(n<=9)的棋盤,問放k(k<=n*n)個國王滿足不衝突的方案數,國王的攻擊範圍是周圍的八個位置。

非常經典的狀壓dp,dp[i][j][s]代表第i行,已經存了j個棋子,這一行的國王存放狀態為s的方案數,空間複雜度n*k*(2^n)大概1e6,時間複雜度n*k*(2^2n),大概2e8,最後在darkoj上執行是150ms,應該是常數比較小。

#includeusing namespace std;

typedef long long ll;

int n,k;

int cnt[512];

bool c1[512],c2[512][512];

ll dp[11][100][512];

int main()

{ ios::sync_with_stdio(0),cin.tie(0);

// freopen("1.txt","r",stdin);

cin>>n>>k;

for(int i=1;i<1<>1))c1[i]=1;

for(int i=0;i<1《本來已經非常長時間沒有寫過部落格了,感覺寫部落格很麻煩還沒啥用,但奈何自己的dp實在太差,連最簡單的經典問題也沒有做過,一直在想怎麼建建立dp模型,怎麼進行轉移,後來看到了大佬的**後發現簡直不要太簡介,預處理的那幾步雖然朦朦朧朧有些想法,但是具體細節老是不敢寫,感覺會有問題,這也是需要反思的地方,在沒有正解的時候總是不自信,明明接近答案卻不敢進一步思考,當然最後也還是在看了別人部落格後才出的思路,狂%%%一波大佬

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