[ARC125F] Tree Degree Subset Sum 题解

考虑 \(d_i > 0\),所以 \(d_i \gets d_i - 1\),则 \(\sum_{i = 1}^n d_i = n - 2\)
注意到:对于任意的 \(y\),合法的 \(x\) 值域上一定是连续的。

证明:
\(L\) 是满足 \((x, y)\) 合法的最小的 \(x\)\(R\) 是满足 \((x, y)\) 合法的最大的 \(x\),满足 \(d_i = 0\)\(i\) 恰有 \(p\) 个。
注意到多加入或删除一个 \(d_i = 0\)\(i\) 不会使 \(y\) 变化,又因为 \(L\) 是极小的,所以 \((L, y)\) 的方案里一定不存在一个满足 \(d_i = 0\)\(i\),同理 \((R, y)\) 的方案里一定包含所有满足 \(d_i = 0\)\(i\)
所以:

  • \(\forall x \in [L, L + p]\)\((x, y)\) 合法;
  • \(\forall x \in [R - p, R]\)\((x, y)\) 合法。

而若 \(L + p + 1 < R - p\),则命题不成立,因此我们尝试证明:\(R - L \le 2p + 1\)
考虑 \(y - x\),最坏情况下其最小值为全选 \(d_i = 0\)\(i\)(不一定能全选,下同),每个 \(i\) 贡献为 \(-1\),可得 \((y - x)_{\min} \ge -p\),最坏情况下其最大值为全选 \(d_i > 0\)\(i\),可得 \((y - x)_{\max} \le n - 2 - (n - p) = p - 2\),又因为 \((y - x)_{\min} = y - R\)\((y - x)_{\max} = y - L\),所以 \(R - L = (y - x)_{\max} - (y - x)_{\min} \le 2p - 2 \le 2p + 1\)

有了这个结论,如果是普通的 01 背包计算 \(L, R\),复杂度是 \(O(n^2)\) 的,但是考虑 \(\sum_{i = 1}^n d_i\)\(O(n)\) 级别的,所以不同的 \(d_i\) 只有 \(O(\sqrt{n})\) 种,可以跑单次 \(O(n)\) 的单调队列优化多重背包,复杂度就是 \(O(n\sqrt{n})\) 了。
https://atcoder.jp/contests/arc125/submissions/62887472

posted @ 2025-02-18 16:05  Include_Z_F_R_qwq  阅读(25)  评论(0)    收藏  举报