學習筆記第十八節:卡特蘭數
前話
本樓主是蒟蒻,居然最近才搞懂了卡特蘭數,在這裡總結一下,最基礎的總結。
正題
定義卡特蘭數為:
卡特蘭數的遞推式是:
然後有人證出來了一個樸素的遞推公式:
是不是很神奇,為什麼呢?
我也不會,畢竟那個人不是我。
接著,經過不斷摸索,有人解出來了這個遞推式的解:
是不是很神奇,為什麼呢?
我也不會,畢竟那個人不是我。
卡特蘭數就是這樣一個很神奇的東西。
如果在比賽中發現一組線性答案長得是這樣的:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012……
那麼你就可以簡單的斷定它的答案是可以O(1)算的
應用
如果在比賽中不想找規律呢?
那麼您就要先掌握幾個簡單的應用以至於在比賽中不會懵逼簡單地Ak。
第一個:
n個0和n個1,求有多少種方案使得每個字首的 。
首先,全部方案是,很明顯的
其次,討論不滿足的,存在一個奇數
把後面的位都取反,就會變得一共有個0和個1。
反過來,一個有 個0和個1肯定對應一個唯一的不滿足的序列。
因為存在一個奇數使得前面的0比1多,然後把後面翻轉過來又變成n個0和n個1的序列。
所以不成功的方案數就是:
成功方案就是:
第二個:
一個n個節點的二叉樹的形態總數有多少?
明顯選取一個點做根,兩邊分別Dp即可。
所以答案就是卡特蘭數。
還有很多很多,比如說:平面直角座標系上跑有多少種方案,三角形劃分,區域劃分,大多都是運用公式本身的性質體現出來的卡特蘭數,或者在比賽中隱藏的找規律,需要做題練習。