洛谷1350 車的放置

2021-07-22 17:49:59 字數 809 閱讀 6837

題目描述

有下面這樣的乙個網格棋盤,a,b,c,d表示了對應邊長度,也就是對應格仔數。

當a=b=c=d=2時,對應下面這樣乙個棋盤

要在這個棋盤上放k個相互不攻擊的車,也就是這k個車沒有兩個車在同一行,也沒有兩個車在同一列,問有多少種方案。同樣只需要輸出答案mod

100003後的結果。 輸入輸出格式 輸入格式:

輸入檔案place.in的第1行為有5個非負整數a, b, c, d和k。

輸出格式:

輸出檔案place.out包括1個正整數,為答案mod 100003後的結果。

先考慮乙個長為a,寬為b的矩形,在裡面放x個車,總的方案數為c(a,x) * c(b,x) * σ(1..x)。

其實,這就相當於乙個座標有a種選法,另乙個座標有b種選法,選出x個座標的方案數。

分成三個矩形,列舉左上角的矩形和右下角的矩形裡有多少車,分別記為i和j,那麼方案數就是qry(a,b,i) * qry(c,d,j) * qry(a-i,d-j,k-i-j),qry(a,b,x)就是a*b中放x個車。

c和σ都可以預處理出來。

#include

#include

#define ll long long

const int mod=100003,maxn=1000;

ll c[1010][1010],s[1010];

void init()

ll qry(int a,int b,int

x)int main()

洛谷 P1350 車的放置

洛谷 p1350 車的放置 有下面這樣的乙個網格棋盤,a,b,c,d表示了對應邊長度,也就是對應格仔數。當a b c d 2時,對應下面這樣乙個棋盤 要在這個棋盤上放k個相互不攻擊的車,也就是這k個車沒有兩個車在同一行,也沒有兩個車在同一列,問有多少種方案。同樣只需要輸出答案mod 100003後的...

題解 洛谷P1350 車的放置(矩陣公式推導)

洛谷p1350 把矩陣分為上下兩塊n與m 放在n中的有i輛車則放在m中有k i輛車 n的長為a 寬為b m的長為a c 寬為d 在每個矩陣中的放置種類公式如下 a 長度,車輛 c 寬度,車輛 給出證明 比如對於n來說 可以在a列中找出i列放入車 所以是a a,i 而且有c b,i 種選擇列的方式 由...

P1350 車的放置

有下面這樣的乙個網格棋盤,a,b,c,d表示了對應邊長度,也就是對應格仔數。當a b c d 2時,對應下面這樣乙個棋盤 要在這個棋盤上放k個相互不攻擊的車,也就是這k個車沒有兩個車在同一行,也沒有兩個車在同一列,問有多少種方案。同樣只需要輸出答案mod 100003後的結果。輸入格式 輸入檔案pl...