HDU 4828 Grids(卡特蘭數)

2021-08-01 03:40:10 字數 711 閱讀 3975

題意:乙個2行n列的長方形格仔。把1到2n這些數依次放進去,求每行每列都遞增的方案數(對1e9+7取模)。(n <= 1e6)

思路:1到2n乙個個放,有兩種情況,放第一行或者放第二行,可以發現要滿足每行每列都遞增的要求是放的過程中第一行的數大於等於第二行的數。這很類似於台階問 題:

在乙個n*n

的格仔中,我們從左下角出發,前往右上角,每一步,只能水平向右走一格,或者垂直向上走一格,並且不能越過對角線。如果我們將

水平走一格對應為將當前的數填入下行,將垂直向上走一格對應為將當前的數填入上行,則可見這兩個問題完全等價。那麼填充格仔的可行方案數等於台階問題

中從左下角到達右上角的路徑數,等於

,也就是著名的

catalan

數。 

然後就是用費馬求逆元就行了。

**:

#include#include#includeusing namespace std;

typedef long long ll;

const int mod = 1e9+7;

const int maxn = 2e6+5;

ll fac[maxn] = ;

void init()

ll qmod(ll x, ll p)

return ans;

}int main(void)

return 0;

}

hdu4828卡特蘭數

題目大意 有2行n列的長方形格仔,把1到2n這些數放進格仔裡面,使每行每列都遞增。也就是相當於,n個0和n個1排序,要求每個點的前面都要求0的個數大於等於1的個數,問排列的順序的種數。可以轉換為卡特蘭數,有遞推式 cn 1 4n 2 n 2 cn 具體卡特蘭數的資料 要用到逆元 include in...

hdu 2848 Grids(卡特蘭數)

problem description 度度熊最近很喜歡玩遊戲。這一天他在紙上畫了乙個2行n列的長方形格仔。他想把1到2n這些數依次放進去,但是為了使格仔看起來優美,他想找到使每行每列都遞增的方案。不過畫了很久,他發現方案數實在是太多了。度度熊想知道,有多少種放數字的方法能滿足上面的條件?input...

卡特蘭數(HDU 1023)

卡特蘭數又稱卡塔蘭數,是組合數學中乙個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁 查理 卡塔蘭 1814 1894 命名。卡特蘭數 前幾項為 oeis中的數列a000108 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,74290...