description
在一个无穷的满二叉树中,有以下几个特点:
(1) 每个节点都有两个儿子——左儿子和右儿子;
(2) 如果一个节点的编号为X,则它的左儿子编号为2X,右儿子为2X+1;
(3) 根节点编号为1。
现在从根结点开始走,每一步有三种选择:走到左儿子、走到右儿子和停在原地。
用字母“L”表示走到左儿子,“R”表示走到右儿子,“P”表示停在原地,用这三个字母组成的字符串表示一个明确的行走路线。
一个明确的行走路线的价值为最终到达节点的编号,例如LR的价值为5,而RPP的价值为3。
我们用字符“L”、“R”、“P”和“”组成的字符串表示一组行走路线,其中“”可以是“L”、“R”、“P”中的任意一种,所有跟这个行走路线匹配的字符串都认为是可行的。
例如L*R包含LLR、LRR和LPR。而**包含LL、LR、LP、RL、RR、RP、PL、PR和PP这9种路线。
一组行走路线的价值等于所有匹配该模式的路线的价值之和。请你编程计算给定路线的价值。
analysis
-
递推
DP? -
设f[i]f[i]f[i]为到第iii层的贡献和,注意这里PPP视为自己下一层仍连向自己
-
那么可以知道L:f[i]=f[i−1]∗2,R:f[i]=f[i−1]∗2+1,P:f[i]=f[i−1]L:f[i]=f[i-1]*2,R:f[i]=f[i-1]*2+1,P:f[i]=f[i-1]L:f[i]=f[i−1]∗2,R:f[i]=f[i−1]∗2+1,P:f[i]=f[i−1]
-
但是对于填任意字母,会连出三个儿子,贡献为f[i−1]∗5+1f[i-1]*5+1f[

最低0.47元/天 解锁文章
36万+

被折叠的 条评论
为什么被折叠?



