3 条题解
- 
  3
怄火。
考虑一下题目条件是在说什么,这个连通性很自然的导向了点双。建出圆方树,那么集合对 是好的当且仅当 的方点邻居或 自己在 的虚树上。
如果我们把 确定下来,那么 的数量必然是 。那么计数的过程中主要维护的对象就应该是 。
对每个集合 ,我们钦定在 虚树的根结点处计数这个集合的贡献。设 表示所有以 为根的虚树的 对应的集合对个数之和。
再令 表示 子树中,在所有 中额外添加一个 ( 到“原本 对应的虚树”的路径,也是虚树的一部分)时,所有 对应的集合对个数之和。
对于方点,我们有转移
$$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) $$其中 为方点 对应的点双大小。因为钦定了 是虚树的根,那就必须选 个子树。如果选了 个子树,那么任何一个方点 的儿子(圆点)都可以被包含在集合 之中。
不要在这里抉择每个儿子 是否在 里,这里已经在儿子处决择过了。
$$g_u=\left(2^{s_u-1}\sum_{v\in \operatorname{son}(u)}g_v\right)+f_u $$同理,因为到 的路径也是虚树的一部分,方点 的所有儿子(圆点)也可以被包含在 中,所以要乘上 ,最后再加上 。
对于圆点 我们有转移。
$$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) $$如果点 不在 中,那么至少要有两个儿子被选择,才能在虚树上。否则无论如何就都是可行的。
$$g_u=\left(\sum_{v\in \operatorname{son}(u)}g_v\right)+f_u $$这个比较显然。
答案就是:
这里乘 是因为,如果 是方点,我们没有决策其父亲是否在 中,如果 是圆点,我们没有决策自己是否在 中。最后加上两者都为空的 。
其中 是圆方树点数。
 
信息
- ID
 - 4
 - 时间
 - 3000ms
 - 内存
 - 1024MiB
 - 难度
 - 7
 - 标签
 - 递交数
 - 144
 - 已通过
 - 28
 - 上传者