活跃农民

- 积分
- 929
- 学分
- 个
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- UID
- 75545
- 注册时间
- 2012-12-15
- 最后登录
- 1970-1-1
- 在线时间
- 小时
- 好友
- 收听
- 听众
- 日志
- 相册
- 帖子
- 主题
- 分享
- 精华
升级
  89.86%
|
本楼: |
👍
0% (0)
|
|
0% (0)
👎
|
全局: |
👍 100% (30) |
|
0% (0) 👎 |
三个player每人max自己的score应该就可以了吧,三维dp或者recursion with memorization
a(i,j) -> (score_a, score_b, score_c) : max score a can achieve if a starts picking a pile in the current settings
b(i,j) -> (score_a, score_b, score_c) : max score b can achieve if b starts picking a pile in the current settings
c(i,j) -> (score_a, score_b, score_c) : max score c can achieve if c starts picking a pile in the current settings
a(i,j)计算方法:
if i ==j:
a(i,j) = (piles,0,0)
else:
ah,bh,ch = b(i+1,j)
at,bt,ct = b(i,j-1)
if ah+piles > at+piles[j] or ah+piles == at+piles[j] and max(bh,ch)<=max(bt,ct):
a(i,j) = (ah+piles, bh,ch)
else:
a(i,j) = (at+piles[j], bt,ct)
把a(i,j)存一下加速计算。
要考虑break tie的情况因为现在有3个人,取头尾都一样的话应该取让除了当前player之外的最高的那个人少拿的case
补充内容 (2020-11-26 02:07):
a(i,j)意思是现在轮到a来拿,piles现在可以拿的pile是从i到j的这些piles
|
评分
-
查看全部评分
|