题意:有 n 个物品,每个物品有权值 a,b,首先由 A 选择 p 个物品,然后由 B 从其中再选择 k 个物品。B 首先想让剩余 p−k 个物品的 b 的和尽可能小,在此基础上让 a 的和尽可能小;A 首先想让这 k 个物品的 a 的和尽可能大,在此基础上让剩余 p−k 个 b 的和尽可能大。问 A 选哪 p 个才能在 B 走最优策略下对 A 最有利。
首先,A 选 p 个后由于不知道 B 会怎么选,从而较难确定选哪 p 个更优。于是我们考虑 A “让” B 选哪 k 个对 A 最优。由于 B 始终会选对 B 最优的,所以我们 A 能“让” B 选某 k 个,当且仅当存在至少 p−k 个对 B 更劣的选择(这样 B 才会心甘情愿地选 A 规定的那 k 个)。
所以,我们先按对 B 的贡献从优到劣排序,A 可以且尽可以从前 n−(p−k) 个元素里选“让” B 选的元素(这样后面才存在至少 p−k 个更劣的)。
由于前面这些元素 A 可以任意选,所以可以对前 n−(p−k) 再按对 A 的贡献从优到劣排序。此时前 k 个已经钦定为 B 选的元素,接下来要处理剩下 p−k 个元素该怎么选。
此时这 p−k 的限制为:必须比前 k 个中任意一个对 B 都更劣(为了保证 B 不选它);在此基础上对 A 尽可能优。可以通过对 A 的贡献排序后选最前面满足条件的 p−k 个。