信友队题目
https://xinyoudui.com/ac/contest/74700BA640008E90722647/problem/42337
首先考虑一个事情,就是每次从待选集合里选择的数的数量不确定,这不是很好计数,有一个很好的转化是转化操作排列,然后探寻发生贡献的充要条件是什么。
假设我们最后得到集合 \(S\),我们判断有多少个排列能够得到 \(S\),那么当且仅当所有不在集合里的结点,存在一个与其相邻的结点,使得其在集合中并且其在排列中的出现顺序在这个结点之前。
然后我们假设最终集合只有一个,那么我们设计 DP 状态 \(f_{i, j, 0/1}\) 表示 \(i\) 在其子树中排名为 \(j\),且所有儿子结点不满足/满足上述条件的方案数,具体转移就像 SAO 那样转移即可。
但是最终的集合可能有很多个,怎么办呢?我们只需要看 \(i\) 到底可不可能在 \(S\) 中即可,显然这些条件是可以并起来的。
写起来巨屎依托。

浙公网安备 33010602011771号