‹ 上一题 下一题 ›

g6-07541. 匹配·两遍扫孩子 未做

1000 ms 256 MB 测试点 ? 自拟题知识点题GESP-66级·树形 DP 入门客观题单选

树上最大匹配(选尽量多的边,任意两条没有公共端点)的 DP:

for (int v : ch[u]) sum += max(f0[v], f1[v]);   // 第一遍
f0[u] = sum;
f1[u] = -INF;
for (int v : ch[u])                              // 第二遍
    f1[u] = max(f1[u], sum - max(f0[v], f1[v]) + f0[v] + 1);

其中 表示「u 已经和某个孩子配了对」时的最大匹配数。第二遍循环里 sum - max(f0[v], f1[v]) + f0[v] + 1 的含义是( )。

  • A. 取所有孩子里 最大的那个,再加 1
  • B. 把「u 与 v 配对」的那条边 1 直接加到 sum 上,其余不变
  • C. 把 v 的贡献换成 (因为 v 被配对后可以继续和它的孩子配)
  • D. 先撤掉 v 原来的贡献 、换成 (v 和 u 配对后不能再和自己的孩子的配对),再加上这条边 1
未选择
输入
输出

            
答案