我们发现根的区间必须完全包含于子孙的区间或者与其不交,因此只考虑这颗子树内的相对大小时,根的区间形如
[i,i+1]。
因此一棵树的答案是
2n∏si(2n)!。
直接生成函数,有
dxdf=ef+(y−1)。
这里
y 表示叶子的个数,
x 表示总结点数,我们要求的答案是
n2n(2n)!n![xnyk]f。
为了方便起见,下面都用
f′ 表示
dxdf。
f′=ef+y−1f′e−f=1+(y−1)e−f
−g′=1+(y−1)g−e(y−1)x=e(y−1)xg′+(y−1)e(y−1)xg
设
h=e(y−1)xg,那么有
−e(y−1)x=h′h=1−ye(y−1)x+C
这里
h 的常数项为
1,因此
C=−1−yy
g=1−y1−1−yye(1−y)xf=−ln(1−y1−ye(1−y)x)=ln(1−y)−ln(1−ye(1−y)x)
n![xnyk]f=i=1∑k(−1)n−k+iin−1(k−in)
然后就可以
O(n) 预处理
O(klogkn) 计算答案,或者
O(nlogn) 计算一行答案。
upd:好像也不需要
O(n) 预处理。