acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
登录
注册
题目详情提交记录(0)
  • [普及]93776题解

    题意概括 给你一个序列,从前往后选择任意个数,同时偶数索引处翻倍,求序列最大值是多少。 思路 一般求最大/最小值,方案数都是 dp。因此考虑 dp。(递推也是 dp 的一种实现方法) 设 dpi,jdp_{i,j}dpi,j 为在遇到第 iii 只怪物时,已击败怪物数  mod 2=j\bmod 2 =jmod2=j 时最大经验总和,也就是已击败偶数(j=0j=0j=0)个怪物或者奇数个怪物(j=1j=1j=1)时的最大经验值。对于每个 dpi,jdp_{i,j}dpi,j 都有两个选择:击败/放过该怪物。枚举这两种情况,我们即可得出状态转移方程: dpi,0=max⁡(dpi−1,1+ai,dpi−1,0)dp_{i,0} = \max(dp_{i - 1,1} + a_i , dp_{i - 1,0}) dpi,0 =max(dpi−1,1 +ai ,dpi−1,0 ) dpi,1=max⁡(dpi−1,0+2×ai,dpi−1,1)dp_{i , 1} = \max(dp_{i - 1 , 0} + 2 \times a_i , dp_{i - 1,1}) dpi,1 =max(dpi−1,0 +2×ai ,dpi−1,1 ) 最后输出 max⁡(dpn,0,dpn,1)\max(dp_{n,0},dp_{n,1})max(dpn,0 ,dpn,1 )即可。 同时,我们发现,每个 dpi,jdp_{i,j}dpi,j 和 aia_iai 在使用过两次后便不在使用,因此我们可以使用滚动数组进行优化:

    userId_undefined

    很烫的凉水

    9阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页