不难发现问题等价于:把每棵树划分成若干条链,把这些链拿来做圆排列,要求相邻的链不能来自同一棵树,求方案数。
假设我们已经把每棵树划分成了若干条链,并且确定好了链在圆排列中出现的方向(长度大于 $1$ 的链有两种可能的方向),求圆排列方案数。假设此时第 $i$ 棵树的点划分成了 $A_i$ 条链。
不难发现问题等价于:把每棵树划分成若干条链,把这些链拿来做圆排列,要求相邻的链不能来自同一棵树,求方案数。
假设我们已经把每棵树划分成了若干条链,并且确定好了链在圆排列中出现的方向(长度大于 $1$ 的链有两种可能的方向),求圆排列方案数。假设此时第 $i$ 棵树的点划分成了 $A_i$ 条链。
对于一个已经无法继续旋转的多边形,我们考虑它上面的一个四边形,其顶点依次为 $A,B,C,D$($O$ 点表示多边形的 $1$ 号顶点):
设 $W$ 为初始根节点的权值。由于每个叶子的权值互不相同,所以 $W$ 来自的叶子结点唯一。
改变 $W$ 的策略有以下三种:
设 $f_i$ 表示从第 $i-1$ 块玻璃和第 $i$ 块玻璃之间向第 $n$ 块玻璃的方向射出了一束大小为 $1$ 的光线,最终能穿过第 $n$ 层玻璃的光的数量。特别地,$f_{n+1} = 1$,你可以想象成在第 $n$ 块玻璃的后面还有一块反射率为 $0\%$、透光率为 $100\%$ 的玻璃。
下文中的 $a_i,b_i$ 为原题中的 $a_i\%, b_i\%$。