1495: [NOI2006]网络收费

观察到层数最多只有10,那么状压层数,
发现对于第i层,若是设为na <nb,那么在子树遍历的时候,以当前层为lca的点为a时能产生价值,反之同理。
令f[i][j]表示第i个点,下面有j个a点,以及记录当前层包含区间[L,R],那么对于na < nb时只能更新[L,mid]反之只能更新[mid+1,R]
考虑到叶子节点的时候,因为已经考虑了其祖先状态,那么一层层分别考虑贡献即可。

c++代码如下:

 

4 + 7 =