题目大意
这种二叉树的每个叶子节点上都标注了权值,而且具有以下有趣的特性:每个非叶子节点,其左右子树叶子节点的权值之和相等。 我们称这种二叉树叫平衡二叉树。
我们将一棵平衡二叉树叶子节点的权值从左到右列出来,假如这个权值序列是另一个序列A的子序列,我们称这棵平衡二叉树“隐藏”在序列A当中。在本题中,我们称一个序列S2是另一个序列S1的子序列,当且仅当S2可以由S1中删除0个或多个元素,但不改变S1中剩余元素的相对位置获得。
分析
我们设fx表示现在取的值和为x,最多可以取fx个数
可以发现选的数都满足 ai=2x∗y这样的形式,所以我们可以先枚举y然后找到每次合法的ai
然后fx=max(f[x],f[x-ai]),这条方程式在ai|x的时候可以转移
code
这里写代码片