題目大意:有一片正方形狀(旋轉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個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師再次吹哨子時,傳球停止,此時,拿著球沒有傳出去的那...