AGC065C Avoid Half Sum
不难发现题目等价于:
对于每个 \(a_i\) 构造一个 \(b_i\),满足 \(b_i\le a_i\) 且 \(b_i\equiv a_i(\bmod 2)\),问能否构造 \(b\) 使得无法选出 \(b\) 的一个子集元素之和为 \(\frac{\sum b}{2}\)。
此时有充要条件:
若 \(\exists i\),满足小于 \(a_i\) 的奇数数量 \(g_i<a_{i}-1\),则有解,否则无解。
若该结论为真则可排序后扫描一遍解决原问题。下面是证明:
-
必要性
即需要证明:
若 \(\forall i\),都满足小于 \(a_i\) 的奇数数量 \(g_i\ge a_i-1\),则无解。
不妨将 \(a_i\) 升序排序,则不难发现 \(\sum_{j=1}^{i-1} b_j\ge b_i-1\)。此时可以归纳证明:
\(\forall j\in[1,n]\),\(b_1\sim b_j\) 可以表示出 \(0\sim \sum_{i=1}^j b_j\) 的所有值。
当 \(j=n\) 时必要性得证。
-
充分性
下面给出满足该结论时的构造方案。设 \(A\) 为满足条件的 \(a_i\)。
- 若 \(A\) 为奇数,不妨令所有 \(a_i\) 为偶数的 \(b_i\) 设为 \(0\),所有 \(a_i<A\) 为奇数的 \(b_i\) 设为 \(1\),所有 \(a_i>A\) 为奇数的 \(b_i\) 设为 \(A\)。此时若 \(1\) 的数量为奇数则直接有解,否则由于 \(A-1\) 为偶数,\(g<A-2\),故可以让一个 \(a_i\) 变成 \(1\) 使得 \(1\) 的数量为奇数,成功构造。
- 若 \(A\) 为偶数,此时若 \(A\) 后仍有奇数,可令 \(A\) 为其后第一个奇数,转化为上一种情况;否则令前面所有奇数为 \(1\),偶数为 \(0\) 即可成功构造。
证毕。