给你一棵树 询问现在小于等于$m$的权值出现情况 权值是任意联通子树的点权和。
$n\leq 3\times 10^3,m\leq 10^5$
考虑暴力解决,$dp[x]$表示$x$往下可以组成多少种,显然$dp[x][j+a[x]]=dp[u][j]$
只需要是否存在,显然可以$bitset$优化,需要注意的是。
- 一开始想处理每个子树可形成的再合并,考虑背包合并不太可能。
- 合并其他子树的时候带着其他子树的消息即可。
代码
1 |
|
给你一棵树 询问现在小于等于$m$的权值出现情况 权值是任意联通子树的点权和。
$n\leq 3\times 10^3,m\leq 10^5$
考虑暴力解决,$dp[x]$表示$x$往下可以组成多少种,显然$dp[x][j+a[x]]=dp[u][j]$
只需要是否存在,显然可以$bitset$优化,需要注意的是。
1 |
|