摘要:
#树上背包 给一颗树,每个节点上有一个物品,每个体积为wi,价值为vi。 选了一个点必须选它的父亲。 问总体积不超过m的情况下总价值最大值 f[u][j]代表在以u为根的子树中,选了j的体积,能得到的最大价值 ·首先i一定要选 ·枚举给每个子树v分配多少体积k f[u][j]=max(f[u][j] 阅读全文
摘要:
#LCA ###倍增 f[i][j]代表i的2^j级父亲 f[i][j]=f[f[i][j-1]][j-1] 有了f数组,如何计算“u向上跳k步到达哪个点”? 对k作二进制分解,枚举所有二进制位。 如果第i位为1,那么令u=f[u][i] O(nlogn) 预处理 for(int i=1;i<=n; 阅读全文