題目描述
很久以前,有乙個強大的帝國,它的國土成正方形狀,如圖所示。
這個國家有若干諸侯。由於這些諸侯都曾立下赫赫戰功,國王準備給他們每人一塊封地(正方形中的一格)。但是,這些諸侯又非常好戰,當兩個諸侯位於同一行或同一列時,他們就會開戰。如下圖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 走...