組合數學 思維題 10 6種樹

2022-05-20 03:19:39 字數 1469 閱讀 9410

感謝學弟貢獻的精彩人類智慧型

計數$1 \le k \le n$個節點的除葉子節點外所有節點均有兩個兒子,且任意葉子節點到根的左偏距離$\le m$的二叉樹方案數.

$n,m \le 5000$

考慮一下這些葉子的左偏距離有沒有什麼性質

首先把葉子從左到右寫成乙個序列。初看上去相鄰兩個權值的變化沒有什麼規律,但是仔細思考一下就會發現因為每乙個左葉子都有對應的右葉子,因此對相鄰的元素有關係$w_l \le w_r+1$。並且這樣構造出來的序列是和合法的二叉樹一一對應的。

於是接下來dp構造這個序列。$f[i][j]$表示構造完了$1\cdots i$,現在$i$位置權值為$j$的合法方案數。最終的答案就是$f[i][0]$.

1 #include2

#define mo 998244353

3const

int maxn = 5035;4

5int

n,m,f[maxn][maxn],sum[maxn];67

intmain()818

for (int i=1; i<=n; i++) printf("

%d\n

",f[i][0

]);19

return0;

20 }

考慮建模轉化這乙個問題

首先如果一點附加條件都沒有,這即是二叉樹的計數問題,應當要想到卡特蘭數。

那我們就模擬卡特蘭數的平面直角座標繫帶限制走路問題來考慮。

這是類似dfs樹的乙個優先走左兒子的過程,定義每一次向左兒子(並非只對左葉子)走就是在座標系上走$\texttt$的一步;從左兒子回溯向上就是在座標系上走$\texttt$的一步。

以上面這棵樹為例,構造出來的座標系是這樣的。

得益於這棵「左右兒子對應存在」的二叉樹特殊性質,擁有$n$個葉子節點的樹中恰好會有$n$個左兒子,也就是說座標系上最後的終點是$\texttt$.而影象裡每乙個拐點即對應有著極大值的左葉子。

這個構造的性質非常好,由此我們發現了「左偏距離$\le m$」的所有方案即和「影象上所有拐點縱座標$

1 #include2

#define mo 998244353

3const

int maxn = 5035;4

5int

m,n,f[maxn][maxn];67

intmain()819

for (int i=0; i"

%d\n

",f[i][0

]);20

return0;

21 }

end

Glenbow Museum 組合數思維題

問題描述 卡城著名的格林堡博物館是加拿大西部最大的博物館,展品涵蓋了藝術 文化史以及礦物學。如今乙個全新的展區正在被布置,它是專門為你這樣傑出的程式猿 媛 打造的。不幸的是,由於空間不足,博物館打算建造一棟新的建築來重新安置這個展區。新的建築的尺寸和容量將不同於原始的建築,但是所有樓層的設計都是直角...

組合數學八題

題目來自朱全民老師ppt 題目如下 樣例 n 3 m 2 a 給定n個不同的球,放進m個不同的盒子,盒子允許為空,有多少種方案?樣例輸出 8 b 給定n個不同的球,放進m個不同的盒子,盒子不允許為空,有多少種方案?樣例輸出 6 c 給定n個不同的球,放進m個相同的盒子,盒子允許為空,有多少種方案?樣...

樹 DP or 組合數學

題目描述 shy有一顆樹,樹有n個結點。有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對 x,y x到y的路徑上的所有點的顏色都要與x和y相同。請統計方案數。輸入描述 第一行兩個整數n,k代表點數和顏色數 接下來n 1行,每行兩個整數x,y表示x與y之間存在一條邊 ...