CF 1516C
题目内容
给定一列数
特殊的数据范围:
解法
提示一
我们最多需要移除几个元素就能达成题目的要求?
提示二
提示一的答案:一个,证明见解答。
提示三
如何验证初始给定的序列是否已经满足要求?看看这么小的数据范围(
提示四
提示三的答案:背包dp。
解答
先证明提示一、二的结论:最多只需要移除一个元素就能满足要求。
考虑一个初始能够划分成两个元素和相同部分的序列。如果序列中含有一个奇数,则删去该奇数一定能够满足条件(因为此时整个序列的元素和为奇数);若没有奇数,考虑移去一个
那么如何检查序列是否已经满足题目要求的条件,也即是否存在一个子序列的元素和恰好为整个序列和的一半?考虑到这么小的数据范围,我们能轻易联想到背包 dp。与普通的背包 dp 不同,我们需要的是 恰好 装满背包的情况,不过转移状态时只需要转移可行性即可。
AC 代码
见提交记录。