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} 2n−1条路径。因为每一条路径都会一分为二,且初始时刻有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+……+2n−2 中间状态+2n−1 T:末态
- {9}是初态;{9,12,6}、{9,15,6,18}是中间态;{9,15,6,9,10}、{9,12,6,9,10}是末状态
- 求解目标是寻找最大和的末态
- 无法用一个有效的贪心策略事先推断出哪一条路径最优
- 求解策略:分类贪心;走一步看一步,动态决策
- 递推1 —— 从初态开始,考虑:到哪里去?
- DFS,主要考虑:一个对一个的影响,比较次数多,但存在大量的无效比较
- 子结构 —— 状态分类
- 最优子结构 —— 分类贪心
- BFS,主要考虑:一类对一类的影响,由于利用最优子结构避免了无效比较,因此比较次数少
- DFS,主要考虑:一个对一个的影响,比较次数多,但存在大量的无效比较
- 状态设计
- 按最后一步所在的位置分类,每一类为一个状态,共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));
- 递推过程 —— 从第一个已知的位置开始
( 1 , 1 ) → {(1,1)}\\rightarrow (1,1)→以上是关于HDU 2084 数塔的主要内容,如果未能解决你的问题,请参考以下文章