注意到树的深度很小,所以路径长度也很小,可以先 DP 出每种路径长度的数量。
令 \(f_{i,j,0/1}\) 表示深度为 \(i\) 的满二叉树,长度为 \(j\) 的路径,一个端点不一定/一定在根结点的数量。跨越左右子树的转移就暴力枚举两侧深度。当然这里可以直接算。
但原树只是完全二叉树。观察到根的左右子树一定有一棵是满二叉树,所以可以递归计算不是满二叉树的那棵子树然后合并,方法同上。
最后计算答案,枚举最大值,再枚举最大值的位置(有多个最大值就取最靠前的位置,避免算重)。计算过程显然可以用等比数列求和公式优化,快速幂也可以通过预处理去掉,所以这里是 \(O(1)\) 的。
标签:Travel,CF1868C,枚举,Plan,最大值,二叉树 From: https://www.cnblogs.com/landsol/p/17728184.html