有
个大小为 的照片堆,每张照片可以用一个二元组 描述,每个堆可以用一个四元组 描述,表示堆顶的照片为 ,堆底的照片为 。 Alice 和 Bob 要轮流取照片,Alice 先手,轮到某个人取时他可以选择跳过,若一轮中两人均选择跳过则游戏结束。
对于一张照片
,Alice 取它能获得 分,Bob 能获得 分,位于堆底的照片要等到相应堆顶的照片被取掉才能取。 记 Alice 的得分和为
,Bob 的为 。Alice 的目标是最大化 ,Bob 则要最大化 。 两人绝顶聪明,求出游戏结束时的
。
, 。
考虑每堆只有一张照片的情况,由于
考虑推广到原题,但是有个问题就是不一定每张照片都被取走。考虑这样做的深层原因,对于两张照片
那么不难发现对于一个照片堆
- 若
,则两人都想取走上面那个,那么对于这些堆中的照片按照 从大到小排序,轮流取即可。注意这样堆顶的照片一定会先被取走; - 否则
,则变形得 :- 若
且 ,则双方均不想动这堆,这堆对答案没贡献; - 若
且 ,则 Bob 会取这堆,对答案贡献 ; - 若
且 ,则 Alice 会取这堆,对答案贡献 ;
- 若
时间复杂度