‹ 上一题 下一题 ›

g7-07706. 树形背包合并的倒序与容量限制 未做

表示在 的子树里选 个节点的最优值,容量上限为 ,cur 是 目前已合并的节点数,sz[v] 是儿子 的子树大小。合并儿子 时写两层循环:

for (int j = min(cur, K); j >= 0; j--)
    for (int k = 0; k <= min(sz[v], K - j); k++)
        dp[u][j + k] = max(dp[u][j + k], dp[u][j] + dp[v][k]);

这两处写法( 倒序、 的上界取 )各自要防的问题是( )。

  • A. 两处都多余:合并的是不同子树,循环方向和上界都不影响结果
  • B. 倒序只为减少运算次数, 只为让 的下标从 开始
  • C. 倒序为防止 取到负数, 为防止 取到负数
  • D. 倒序为使儿子 的贡献只被算一次(否则同一棵子树被选多次), 为防止 超出容量
未选择
输入
输出

            
答案