• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
巅峰主公
博客园    首页    新随笔    联系   管理    订阅  订阅

noip200605能量项链

题解:

状态转移方程为:dp[i][j] = max{dp[i][k] + dp[k+1][j] + a[i]*a[k+1]*a[j+1]}, k=i, ..., j-1, i和j都从1开始。dp[i][j]表示

输入n个数,则表示有n-1个能量珠。由于题目中的项链是一个环,起点可能是任意一个位置,可采用数组模拟环。(具体参见代码中的实现)

动态规划的过程,即各层循环如何设置,请看下面的分析:

dp[1][2] = max{dp[1][1] + dp[2][2] + a[1]*a[2]*a[3]}

dp[1][3] = max{dp[1][1] + dp[2][3] + a[1]*a[2]*a[4], 

                           dp[1][2] + dp[3][3] + a[1]*a[3]*a[4]

                          },因此dp[2][3]必须在dp[1][3]之前计算。

......

方案一:采用石子归并中的解法:按步进len从2开始依次计算。(代码基本同石子归并)

方案二:采用相同终点作为主循环(石子归并也可采用此法)。代码如下:

 

posted @ 2017-07-10 09:17  一个天才  阅读(183)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3