题目描述
求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数。
$n\le 10^{18}$
题解
树形dp+记忆化搜索
设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根节点的最大匹配&方案数,$g[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配不选择根节点的最大匹配&方案数。那么这是一个很普通的树形dp。
注意到区间长度相等的线段树的结果是一样的,且每层至多有两种区间长度不同的区间(参考 这题 ),因此直接以区间长度为状态进行记忆化搜索即可。
这里偷懒使用了map,时间复杂度 $O(\log^2 n)$
#include