接下来考虑两人操作的过程。在这个阶段 A,B 只有一个选(我们钦定 A 先选),一定是 A 先遇到一个大的选了,然后 B 被卡住了。那么把可能比这个卡点还大的数放到前面来明显不会影响 B 被卡的事实,所以在这一步是正常进行的,之后无非就是剩下的钱少的人继续被卡,和第一步本质相同。所以从大到小排序然后依次选择的正确性是有的。
对每个从大到小排序的物品处理,令 dp_{j,k,i} 表示考虑到当前,给 A 分配 j 元,B 分配 k 元,两人共用 i 元的方案数。转移就是谁被卡就另一个人选,否则两个都选。方程是平凡的:原地转移,做一个类似背包的东西即可。初始化直接 dp_{a-i,b-i,i}=0 表示预先分配好了等着你从这开始选,其余位置负无穷,最后共同分配的钱必须花光,只在 i=0 贡献答案即可。