luogu 1375 小貓 (卡特蘭數)

2022-05-01 03:39:10 字數 2969 閱讀 5451

這是我做題史上摔得最慘的一道黃題,15條記錄轉眼化為淚水。o(╥﹏╥)o

這道題目從10.12開始嘗試,隨機跳題跳到了這題,一看就是卡特蘭數,因為樣例太像了。。

然後小心證明

這個就是catalan的式子啊,,

然後打了一發階乘+逆元求組合數再套公式,

ll fac[n], inv[n], fi[n] ;

void

init()

}ll c(ll a, ll b)

intn ;

intmain()

30,就是跟暴力一樣。。。

然後之後暴力改了改,還是30

於是先把暴力的$o(n^2)dp$敲了,拿了60分

開大陣列,80分,tle兩個點,一想,肯定是暴力的頂峰了,。

1 #include2 #include3

long

long c[100010]=;

4int

main()14}

15 printf("

%lld

",c[n]);

16 }

80 points code

之後這個題目就再沒碰過,直到today,11.29

發現第乙個30分**沒有強轉ll,改了一下,30。

發現輸出答案直接除,應該轉為逆元,60了

之後覺得預處理麻煩,乾脆不用,60。。

放一下60分**

1

int jc(int

a) 5

6int power(int a, int

b) 11

12int c(int a, int

b)15

16int

n ;17

18int

main()

60 points code

發現自己c裡面b和a-b沒套jc,尷尬了

改完,依然60

冷靜分析,發現自己快速冪寫錯了,自閉了。。

我怎麼那麼菜啊,。。。

然後就ac了

放一下最終**:

1 #include 2 #include 

3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include

12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19

using

namespace

std ;

20#define int long long

21#define rep(i, a, b) for (int (i)=(a);(i)<=(b);(i)++)

22#define rep(i, a, b) for (int (i)=(a)-1;(i)

23#define rep(i, a, b) for (int (i)=(a);(i)>=(b);(i)--)

24#define reg(i, x) for (int (i)=head[x];(i);i=e[i].next)

25#define clr(a) memset(a,0,sizeof(a))

26#define sort(a, len) sort(a + 1, a + len + 1)

27#define sort2(a, len, cmp) sort(a + 1, a + len + 1, cmp)

28#define ass(a, sum) memset(a, sum, sizeof(a))

2930

#define ull unsigned long long

31#define ll long long

32#define ls ((rt) << 1)

33#define rs ((rt) << 1 | 1)

34#define mp make_pair

35#define pb push_back

36#define fi first

37#define se second

38#define endl '\n'

39#define pii pair40

41const

int n = 100010;42

const

int iinf = int_max/2;43

const ll linf = llong_max/2;44

const

int mod = 1e9 + 7;45

46 inline int

read()

50while(isdigit(ch)) x = (x<<3) + (x<<1) + (ch ^ 48),ch =getchar();

51return w ? -x : x;52}

5354

void write(int

x)59

60int jc(int

a) 64

65int power(int a, int

b) 70

71int c(int a, int

b)74

75int

n ;76

77signed main()

8182

/*83

寫**時請注意:

841.是否要開long long?陣列邊界處理好了麼?

852.特殊情況處理好了麼?

863.做一些總比不做好。

874.最大值和最小值問題可不可以用二分答案?

885.有沒有貪心策略?否則能不能dp?

896.實數精度有沒有處理?

90*/

ac code

卡特蘭數,高精度卡特蘭數

簡單介紹 卡特蘭數是組合數學中常常出現的乙個數列。個人認為不管是遞推公式還是代表的含義都比斐波那契數列難理解一些。遞推公式 應用 1.cn表示長度2n的dyck word的個數。dyck word是乙個有n個x和n個y組成的字串。且全部的字首字串皆滿足x的個數大於等於y的個數。下面為長度為6的dyc...

卡特蘭數和超級卡特蘭數

這篇部落格主要是想講一下超級卡特蘭數 大施洛德數 順帶就想講一下卡特蘭數.卡特蘭數記為 c n c 1 1 forall n geq 2,c n sum c i c 前幾項大概是 1,1,2,5,14,42,132.直接遞推未免效率太低,我們考慮用生成函式優化.顯然有 c x c x 2 x 解得 ...

卡特蘭數 Catalan

問題 程式設計之美 第4.3節中提到了 買票找零 問題,查閱了下資料,此問題和卡特蘭數 cn有關,其定義如下 卡特蘭數真是乙個神奇的數字,很多組合問題的數量都和它有關係,例如 yyy xyxxyy xyxyxy xxyyxy xxyxyy ab c d a bc d ab cd a bc d a b...