@RabbitHu
2017-09-06T16:48:12.000000Z
字数 267
阅读 1455
作业
首先,如何用一个二进制数表示一条路径?
可以设计这样一种方案:
从深度为i(根节点深度为0)的点往左走,则二进制数的第i位是0;向右走,则第i位是1。(第0位是最低位)
我们发现,每有一个小球落下,它的路径二进制数就是上一个小球的路径二进制数 + 1。
那么我们只要把路径二进制数转化为点的编号即可。只需把这个二进制数左右颠倒过来(例如 10010 变成 01001)然后在最左边加一个1即可。
DFS(树形DP?)
把子树中所有正的DP加起来即可。
用左二子右兄弟版(链前版)的Trie树即可。