DP瞎讲

由于被叫到要分享算法,这里瞎总结下我一些做题经验,想到啥讲啥

以下针对,常见一维,DAG图上DP瞎讲


DP数组

感觉常见数组含义都是,前 i ​ i​ i 个选 j j j 个,第 i i i 个选不选等,DAG图上也可以类似对应。

普通一维, D P [ i ] [ j ] = ? DP[i][j]=? DP[i][j]=? 左边含义如此,当然也可以扩展维度,成为三维等。

dp等式右边本人常见的有,极值,方案数,能否转移(方案数 > = 1 >=1 >=1)。

一些其他的限制通常加在等式左边(如第k大啥的),或转移时增加条件。


转移方程

我感觉的常见转移

从某个位置转移而来,for一遍位置(有些可以用斜率四边形等操作优化决策集,使枚举位置这层复杂度变成均摊 O ( 1 ) O(1) O(1)

从上个状态转移而来,形如 D P [ i ] [ j ] = D P [ i ] [ j − 1 ] + ? DP[i][j] = DP[i][j-1]+? DP[i][j]=DP[i][j1]+? 这种,这种通常能用滚动数组优化。

PS. 有些题目,可能要经过排序后才可能能够DP,这种可能比较难看出。


DAG图上DP

我了解的就只有(菜)拓扑排序,或者树形DP

因为图是无环的,满足DP的无后效性,正确性比较显然?写起来难想。

拓扑排序感觉就跟一维的没什么区别

树形常见 d p [ i ] [ j ] dp[i][j] dp[i][j] 以i为根节点第j大,也可以跟拓扑类似,树形没刷几题orz。


随便方几道例题

NOIP 2000 乘积最大 ———— 前i个选j个

POJ 3249 Test for Job ———— 拓扑排序DP,可以衍生下只能选m个节点之类

HRBUST 2319——Number Game ———— 排序,前i个选j个

CF 1152 D.Neko and Aki’s Prank ———— 前i个选j个,方案数

HDU 2196 Computer 树形DP

CF 633 F. The Chocolate Spree 树形DP

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值