HDU 2084 数塔

Posted jpphy0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2084 数塔相关的知识,希望对你有一定的参考价值。

链接

数塔 - http://acm.hdu.edu.cn/showproblem.php?pid=2084
在这里插入图片描述

分析1 —— 自顶而下

  • 路径:共有 2 n − 1 2^{n-1} 2n1条路径。因为每一条路径都会一分为二,且初始时刻有1条路径。
  • 状态
    • 每一次位置变化都是一个状态,这些状态反映了之前的情况,且是后续的基础
    • 2 0 ⏞ S : 初 态 + 2 1 + 2 2 + 2 3 + … … + 2 n − 2 ⏞ 中 间 状 态 + 2 n − 1 ⏞ T : 末 态 \\overbrace{2^0}^{S:初态} +\\overbrace{2^1 + 2^2 + 2^3 + ……+ 2^{n-2}}^{中间状态}+ \\overbrace{2^{n-1}}^{T:末态} 20 S+21+22+23++2n2 +2n1 T
    • {9}是初态;{9,12,6}、{9,15,6,18}是中间态;{9,15,6,9,10}、{9,12,6,9,10}是末状态
    • 求解目标是寻找最大和的末态
    • 无法用一个有效的贪心策略事先推断出哪一条路径最优
  • 求解策略:分类贪心;走一步看一步,动态决策

  • 递推1 —— 从初态开始,考虑:到哪里去?
    • DFS,主要考虑:一个对一个的影响,比较次数多,但存在大量的无效比较
      • 子结构 —— 状态分类
      • 最优子结构 —— 分类贪心
    • BFS,主要考虑:一类对一类的影响,由于利用最优子结构避免了无效比较,因此比较次数少
2
19
7
18
10
9
4
5
16
10
6
8
12
15
9
  • 状态设计
    • 按最后一步所在的位置分类,每一类为一个状态,共15个状态;求解的过程就是逐步求得每一类的最优解
    • 初始状态(1,1)
    • 末状态(5,1)、(5,2)、(5,3)、(5,4)、(5,5)
    • 状态转移方程: dp(i,j) → \\rightarrow dp(i+1,j)dp(i+1,j+1)
 dp(i+1, j) = max(dp(i, j), dp(i, j) + d(i+1, j));
 dp(i+1, j+1) = max(dp(i+1, j+1), d(i,j) + d(i+1, j+1));