dp基础之博弈型和区间型结合轮流取数字

这是一个关于两人轮流从序列两头取数字的博弈问题,目标是使得自己的数字和大于等于对手。通过动态规划求解,先手在特定条件下必胜。分析表明,使用区间型dp策略,计算顺序从对角线开始,空间复杂度可优化到O(N)。
摘要由CSDN通过智能技术生成

问题:给定一个序列A[0],..,A[N-1],两个人轮流从序列两头取数字(每次只取一个),双方都用最优策略,使自己的取到的数字和尽量比对手大。
问先手是否必胜?当和一样大时规定先手胜。(True/False)
例:
A = [1,5,233,7]
输出:True(,先手取1,无论后手取哪个,先手都能取到233,即先手必胜)

问题分析:
这是一道博弈型dp,其实质上是区间型dp,目标是让自己拿到的数字和不必对手小
设己方数字和是A,对方是B,目标是A>=B,等价于A-B>=0
也就是说,如果两人都存着自己与对手的数字和之差,Sa = A-B,Sb = B-A,先手目标是让Sa最大化,后手目标让Sb最大化
当一方X面对剩下的数字时,他的目标就是最大化Sx = X-Y,当X取走一个数字m后,对手Y此时也变成先手,Sy = Y-X
对于X来说
        Sx = -Sy+m = m-Sy
        m是当前要取的数字,Sy是对手的数字和

现在X有两种选择,取序列A的头或者尾,因为是最优策略,X选取的m = max{A的头,A的尾}、

case1:如果X取的是A[0],则Y面对的是A[1],...,A[N-1],则Y的目标是最大化Sy,则X想要最大化Sx = -Sy+A[0] = A[0]-Sy
case2:如果X取走的是A[N-1],则Y面对的是A[0],...,A[N-2],则Y的目标是最大化Sy&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值