[组合数学题单]树!不等!

这道题的加强版,就是从链变成了树,弱化版都很难了,这还来加强版......只不过不用打分治 NTT 了

题目自己编的......

只有数学不会,不会就是不会,怎么学都不会......

壹、题目

没找到出处,被迫手打了

一棵树,每条边限制两个端点的大小关系(限制 \(a_u>a_v\)\(a_u<a_v\))。
求有多少种符合要求的排列 \(a\) 满足整棵树的限制。
数据规模:\(n\le 5000\).

贰、题解

定义边向下为正方向,那么如果整棵树都是正方向,最后的答案就是

\[n!\prod_{i=1}^n{1\over size_i} \]

从期望角度考虑,具体看弱化版。但是肯定没有那么好的出题人,考虑使用与弱化版相同的思路,将向上的边容斥掉,但是与弱化版不同的是,它的连通块大小不能直接求,而在弱化版中就是 \(i-j\),所以我们还得加一维记录连通块中有多少点,定义 \(f_{i,j}\) 表示当以 \(i\) 为根的子树中有 \(j\) 个节点的时候整颗子树合法的概率,对于点 \(u\) 和它的儿子 \(v\) 之间的关系,分两类讨论

  • 当规定 \(a_u<a_v\),即这条边是向下,显然他们俩在同一连通块中,所以不用更改第二维,所以我们直接将 \(f_{v,k}\) 加进 \(f_{u,j}\)
  • 当规定 \(a_u>a_v\),即这条边向上,是反的,这个时候我们默认的是他们不在同一连通块,如果要把大于小于反向,它就会被加入连通块,此时需要更改第二维,同时需要算上容斥系数,但是它还要保证当前点 \(u\) 还得是子树中最小的而非原来的子树 \(v\),所以得将保证 \(v\) 最小的概率 \(1\over size_v\) 去掉(就是乘 \(size_v\)),算上保证 \(u\) 最小的概率 \(1\over size_u+size_v\),但是注意此处的 \(size\) 并非子树大小,而是连通块个数,携程转移方程即 \(f_{u,j+k}\) 加上 \((-1)^tf_{v,k}{k\over j+k}\)

由于 \(n\) 比较小,可以直接硬转移 不会有人想写 NTT 的,最后的答案就是 \(n!\times \sum_{i=0}^nf_{1,i}\).

叁、用到の小 \(\tt trick\)

似乎和弱化版相似,除了是在树上维护以外没什么不同的。

posted @ 2021-02-15 20:38  Arextre  阅读(54)  评论(0编辑  收藏  举报