hdu4828卡特蘭數

2021-06-22 06:03:11 字數 868 閱讀 4918

題目大意:有2行n列的長方形格仔,把1到2n這些數放進格仔裡面,使每行每列都遞增。

也就是相當於,n個0和n個1排序,要求每個點的前面都要求0的個數大於等於1的個數,問排列的順序的種數。

可以轉換為卡特蘭數,有遞推式 cn+1=(4n+2)/(n+2)cn;

具體卡特蘭數的資料:

要用到逆元

#include #include #include #include #include using namespace std;

#define ll long long

#define ull unsigned long long

//#define rep(i,n) for(int i=0;i>t;

rep(c,1,t)

}

補充一下卡特蘭數:

令h(0)=1,h(1)=1,catalan數滿足遞推式:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2

h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5

另類遞推式

[2]:h(n)=h(n-1)*(4*n-2)/(n+1);

遞推關係的解為:

h(n)=c(2n,n)/(n+1) (n=0,1,2,...)

遞推關係的另類解為:

h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)

HDU 4828 Grids(卡特蘭數)

題意 乙個2行n列的長方形格仔。把1到2n這些數依次放進去,求每行每列都遞增的方案數 對1e9 7取模 n 1e6 思路 1到2n乙個個放,有兩種情況,放第一行或者放第二行,可以發現要滿足每行每列都遞增的要求是放的過程中第一行的數大於等於第二行的數。這很類似於台階問 題 在乙個n n 的格仔中,我們...

卡特蘭數(HDU 1023)

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

HDU 1134,卡特蘭數

此題考查的是卡特蘭數,由於卡特蘭數很大,所以考慮大數處理。卡特蘭數的前幾項為 h 0 1 h 1 1 h 2 2 h 3 5 卡特蘭數的遞推公式為 h n h n 1 4 n 2 n 1 非遞推公式為c 2n,n n 1 此題用遞推公式求解,並用到大數的乘法和大數的乘法處理,本題對卡特蘭數的前100...