题目传送门:AGC060C Large Heap。
首先这个东西完全就是一个满二叉树的堆,相当于权值顺序要为一个拓扑,且 \(U\) 在 \(V\) 前面。
而 \(U,V\) 在 \(A+1\) 与 \(B+1\) 层的最左和左右端点。
那么 \(U,V\) 分别是两条最左或最右的链。
而拓扑序的开头一定为 \(1\),分成两棵树,然后再找一个根再分裂,那么我们只需要考虑存在 \(U,V\) 的树,剩下的随便填即可,那么最主要的就是存在 \(U,V\) 的两棵树的深度。
考虑 dp,设 \(s_i\) 表示深度为 \(i\) 满二叉树拓扑方案数,\(g_{i,j}\) 表示两棵树的深度分别为 \(i,j\) 的方案数,\(f_{i,j}\) 表示概率。
转移的话考虑选择左右那个树。
将 \(g_{i,j}\) 代入 \(f_{i,j}\) 并用 \(f\) 表示 \(g\) 化简可得
显然初始时 \(f_{n-A,j}=1\) 其中 \(j\ge n-B\)。