[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

浙公网安备 33010602011771号