洛谷 P1240 諸侯安置

2021-08-09 11:59:00 字數 1194 閱讀 2921

題目描述

很久以前,有乙個強大的帝國,它的國土成正方形狀,如圖所示。

這個國家有若干諸侯。由於這些諸侯都曾立下赫赫戰功,國王準備給他們每人一塊封地(正方形中的一格)。但是,這些諸侯又非常好戰,當兩個諸侯位於同一行或同一列時,他們就會開戰。如下圖2—3為n=3時的國土,陰影部分表示諸侯所處的位置。前兩幅圖中的諸侯可以互相攻擊,第三幅則不可以。

國王自然不願意看到他的諸侯們互相開戰,致使國家動盪不安。 因此,他希望通過合理的安排諸侯所處的位置,使他們兩兩之間都不能攻擊。現在,給出正方形的邊長n,以及需要封地的諸侯數量k,要求你求出所有可能的安置方案數。(n≤l00,k≤2n2-2n+1)

由於方案數可能很多,你只需要輸出方案數除以504的餘數即可。

輸入格式:

僅一行,兩個整數n和k,中間用一空格隔開。

輸出格式:

乙個整數,表示方案數除以504的餘數

輸入樣例#1:

2 2

輸出樣例#1:

4本題最重要的東西——圖的轉化:

從左到右dp,設f[i][j]表示前i列第i列選了j個且第i列必須選的方案數,於是就有了狀態轉移方程:

f[i][j]=∑f[k][j-1]*(len[i]-(j-1))

因為前面已經選了j-1個,那麼在第i列就有len[i]-(j-1)個位置可選。

**:

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int f[205][40005];

int ans,n,pk;

const

int p=504;

int main()

for(int i=0;i2;i++)

ans=(ans+f[i][pk])%p;

printf("%d",ans);

return

0;}

洛谷P1240 諸侯安置 遞推

題目大意 有一片正方形狀 旋轉45 看 的國土,有m個諸侯需要安置。諸侯在同一行或同一列上會互相傷害0.0,求出合理安置諸侯 使諸侯兩兩之間都不能攻擊 的方案數對504取模的結果。n 100,k 2n2 2n 1 這張圖中上面第一幅圖為n 3的國土分布。下面前兩幅圖中兩個諸侯會互相攻擊,而第三幅圖不...

dp 洛谷P1240 諸侯安置

哇很好的一道題目誒 和那個八皇后很像的,但是八皇后是一年前做的題了 這個我們搜尋就算了,雖然用一些技巧也不是說過不去 我們dp吧 但是這個影象我們顯然是不可以dp的 那我們轉化一下 圖是從某大佬部落格上盜來的 因為是橫豎關係,所以平移一點影響都沒有 但是你平移成這樣,就可以dp了 f i,j f i...

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...