洛谷P1240 諸侯安置 遞推

2021-07-16 19:17:01 字數 909 閱讀 9945

題目大意:有一片正方形狀(旋轉45°看)的國土,有m個諸侯需要安置。諸侯在同一行或同一列上會互相傷害0.0,求出合理安置諸侯(使諸侯兩兩之間都不能攻擊)的方案數對504取模的結果。(n≤100,k≤2n2-2n+1)

這張圖中上面第一幅圖為n=3的國土分布。下面前兩幅圖中兩個諸侯會互相攻擊,而第三幅圖不會

看到這道題首先想到八皇后問題,但是n<=100,dfs會**t_t。於是想到遞推,但是對於這樣乙個菱形的國土也沒有什麼好的遞推順序,需要轉化成更加「規則」的圖形。

這樣轉化不會影響到最終結果,並且為遞推提供了乙個可行的順序。

設f[i][j]表示前i列裡安置了j個諸侯且第i列安置了諸侯的方案數,那麼有

f[i][j]=sigma其中j-1<= k < i

col[i] 表示第i列有幾行,在第i列之前已經放置了j-1個諸侯,也就是在第i列有j-1行不能放置諸侯,那麼在第i列就有(col[i]-(j-1))個位置是可行的。

答案即為ans=sigma其中k<=i<=n*2-1

#include 

using namespace std;

int n,m,ans;

int col[210],f[210][210];

int main()

printf("%d\n",ans%504);

return

0;}

洛谷 P1240 諸侯安置

題目描述 很久以前,有乙個強大的帝國,它的國土成正方形狀,如圖所示。這個國家有若干諸侯。由於這些諸侯都曾立下赫赫戰功,國王準備給他們每人一塊封地 正方形中的一格 但是,這些諸侯又非常好戰,當兩個諸侯位於同一行或同一列時,他們就會開戰。如下圖2 3為n 3時的國土,陰影部分表示諸侯所處的位置。前兩幅圖...

dp 洛谷P1240 諸侯安置

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

洛谷 P1057 遞推

上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 nnn個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師再次吹哨子時,傳球停止,此時,拿著球沒有傳出去的那...