专栏文章

Solution P14560 | Make a Happy Morning

P14560题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@min1rctf
此快照首次捕获于
2025/12/01 19:09
3 个月前
此快照最后确认于
2025/12/01 19:09
3 个月前
查看原文
首先挂一个 CF1152D 的 O(n2)\mathcal{O}(n^2) 做法:
最大匹配转最大独立集。
然后用树上最大独立集的经典拆贡献做法。
具体地,令 fif_i 表示以 ii 为根的子树的最大独立集;令 gig_i 表示以 ii 为根的子树,要求根节点不选的最大独立集。
hi=figih_i=f_i-g_i,当 ii 的所有儿子的 hih_i 均为 00 时,hi=1h_i = 1,否则 hi=0h_i = 0
最后的 froot=iVhif_{root} = \sum_{i\in V} h_iVV 是树的点集。
注意到整个大 trie 树上有很多相同结构的子树。令 Ti,jT_{i,j} 表示深度为 ii,到根链上有 jj 个多余左括号的一棵树。
对于所有 Ti,jT_{i,j},求出其根节点的 hh 值是否为 11,再用反射容斥计算它在大 trie 上出现了几次,即可 O(n2)\mathcal{O}(n^2) 统计答案。
在上述做法的基础上,打表发现 Ti,jT_{i,j} 的根结点 hh 值为 11,当且仅当 i,ji,j 都是奇数。利用这个性质化简式子,就可以得到一个 O(n)\mathcal{O}(n) 的答案形式。

答案是 i=1n(2n2i+1ni+1)(2n2i+1n+1)\sum \limits_{i=1}^n \binom{2n-2i+1}{n-i+1}-\binom{2n-2i+1}{n+1}。不难发现前者是可以简单预处理的。
难点在后者:f(n)=i=1n(2n2i+1n+1)=i=0n1(2i+1n+1)f(n) = \sum \limits_{i=1}^n \binom{2n-2i+1}{n+1} = \sum \limits_{i=0}^{n-1} \binom{2i+1}{n+1}
考虑利用递推手段求 f(n)f(n)。那我们肯定把式子向 f(n1)f(n-1) 的形式转化。
但是上标跟奇偶性有关。我们引入 g(n)=i=0n1(2in+1)g(n) = \sum \limits_{i=0}^{n-1} \binom{2i}{n+1} 试图拼凑。
f(n)=i=0n1(2i+1n+1)=i=0n1(2in+1)+(2in)=g(n)+g(n1)+(2n2n)f(n) = \sum \limits_{i=0}^{n-1} \binom{2i+1}{n+1} = \sum \limits_{i=0}^{n-1} \binom{2i}{n+1} + \binom{2i}{n} = g(n) + g(n-1) + \binom{2n-2}{n}
但是 g(n)g(n) 怎么求也成了问题。利用它和 f(n)f(n) 的相似性,把它和 f(n)f(n) 加起来:
f(n)+g(n)=i=02n1(in+1)=(2nn+2)f(n)+g(n)=\sum \limits_{i=0}^{2n-1} \binom{i}{n+1}=\binom{2n}{n+2}
所以就有:
f(n)=((2nn+2)f(n))+g(n1)+(2n2n)f(n)=(\binom{2n}{n+2}-f(n))+g(n-1)+\binom{2n-2}{n}
2f(n)=(2nn+2)+g(n1)+(2n2n)2f(n) = \binom{2n}{n+2}+g(n-1)+\binom{2n-2}{n}
至此问题得以 O(n)\mathcal{O}(n) 解决。

评论

1 条评论,欢迎与作者交流。

正在加载评论...