3 条题解

  • 0
    @ 2024-7-24 19:39:42

    怄火。

    考虑一下题目条件是在说什么,这个连通性很自然的导向了点双。建出圆方树,那么集合对 S,TS,T 是好的当且仅当 SS 的方点邻居或 SS 自己在 TT 的虚树上。

    如果我们把 TT 确定下来,那么 SS 的数量必然是 2T2^{|T|}。那么计数的过程中主要维护的对象就应该是 TT

    对每个集合 TT,我们钦定在 TT 虚树的根结点处计数这个集合的贡献。设 fuf_u 表示所有以 uu 为根的虚树的 TT 对应的集合对个数之和。

    再令 gug_{u} 表示 uu 子树中,在所有 TT 中额外添加一个 uuuu 到“原本 TT 对应的虚树”的路径,也是虚树的一部分)时,所有 TT 对应的集合对个数之和。

    对于方点,我们有转移

    $$f_u=2^{s_u-1}\left(\prod_{v\in \operatorname{son}(u)}(1+g_v)-1-\sum_{v\in\operatorname{son}(u)}g_v\right) $$

    其中 sus_u 为方点 uu 对应的点双大小。因为钦定了 uu 是虚树的根,那就必须选 2\ge 2 个子树。如果选了 2\ge 2 个子树,那么任何一个方点 uu 的儿子(圆点)都可以被包含在集合 SS 之中。

    不要在这里抉择每个儿子 vv 是否在 TT 里,这里已经在儿子处决择过了。

    $$g_u=\left(2^{s_u-1}\sum_{v\in \operatorname{son}(u)}g_v\right)+f_u $$

    同理,因为到 uu 的路径也是虚树的一部分,方点 uu 的所有儿子(圆点)也可以被包含在 SS 中,所以要乘上 2su12^{s_u-1},最后再加上 fuf_u

    对于圆点 uu 我们有转移。

    $$f_u=\left(\prod_{v\in \operatorname{son}(u)}(1+g_v)-1-\sum_{v\in\operatorname{son}(u)}g_v\right)+\prod_{v\in \operatorname{son}(u)}(1+g_v) $$

    如果点 uu 不在 TT 中,那么至少要有两个儿子被选择,才能在虚树上。否则无论如何就都是可行的。

    $$g_u=\left(\sum_{v\in \operatorname{son}(u)}g_v\right)+f_u $$

    这个比较显然。

    答案就是:

    2i=1totfi+12\sum_{i=1}^{tot}f_i+1

    这里乘 22 是因为,如果 uu 是方点,我们没有决策其父亲是否在 SS 中,如果 uu 是圆点,我们没有决策自己是否在 SS 中。最后加上两者都为空的 11

    其中 tottot 是圆方树点数。

    信息

    ID
    4
    时间
    3000ms
    内存
    1024MiB
    难度
    7
    标签
    递交数
    139
    已通过
    25
    上传者