洛谷--橙色百道DP总结

最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结。

大概分为三类

第一类,九大背包及其衍生

第二类,经典DP模型,如LCS,LIS等

第三类,实际问题背景的普通,环形,树上DP,多维DP,字符串答案输出型(P1759)

第一类

找啊找啊找GF - 洛谷 不同于普通单维费用背包,本题费用有两维,要求价值最高且另一维费用最少,则当能够提升价值时,就转移费用,否则取费用最小值即可

[USACO06JAN]Dollar Dayz S - 洛谷 完全背包求方案数,__int128的输出

积木城堡 - 洛谷 忽略干扰条件由大到小,对每组积木进行布尔DP即可

投资的最大效益 - 洛谷完全背包,每次统计一下能赚取的利润,所谓换取利润更大的债券,就是把上一次的债券全部卖掉,再来一次背包求取最大利润即可。

第二类 

[YNOI2019] 排序 - 洛谷LIS变形,dp内容不再是长度,而是权值

球迷购票问题 - 洛谷 卡特兰数,dp[i]+=dp[j]*dp[i-j-1] 0<=j<=i-1 dp[0]=dp[1]=1

魔族密码 - 洛谷 LIS变形,大小关系变成前缀与否,重写函数即可

[NOIP1996 提高组] 挖地雷 - 洛谷最长联通子序列,根据联通性关系,当前位置i,可由之前联通位置转移,一旦转移,记录路径,遍历完i,刷新答案,一旦刷新,记录终点,最后输出即可

最大差值 - 洛谷  前缀与后缀最值问题,枚举分界点即可

[NOIP2004 提高组] 合唱队形 - 洛谷  对每个位置向左右扩展求一下最长上升与下降,注意不能用二分优化来写,那样很可能会导致不是以该点为分界点的位置。

[USACO08FEB]Eating Together S - 洛谷LIS

[IOI2000] 回文字串 / [蓝桥杯 2016 省] 密码脱落 - 洛谷 LCS,相同则dp[i-1][j-1]+1 否则,考虑dp[i-1][j] dp[i][j-1]的匹配数,无需考虑dp[i-1][j-1]必定不会比这二者优

胖男孩 - 洛谷 LCS在三者中的情况,注意不能两两先求,必须三者同时,当且仅当三者相同时进行dp[i-1][j-1][k-1]的状态转移,否则考虑承接,dp[i-1][j][k],dp[i-1][j-1][k],dp[i-1][j-1][k-1]

dp[i][j-1][k],dp[i][j-1][k-1],dp[i][j][k-1] dp[i-1][j][k-1] dp[i-1][j][k-1],取最优,只可能是dp[i-1],dp[j-1],dp[k-1]

双子序列最大和 - 洛谷 最大子段和,两边分别求前缀后缀最大和即可。注意前后承接

最长括号匹配 - 洛谷  dp[i]代表右括号在i位置上的最大匹配数,它依靠dp[i-1]的长度进行转移,如果i-dp[i-1]-1位置上是与之匹配的左括号,那么dp[i]就可以转移为dp[i-1]+2,另外,i-dp[i-1]-2位置上也会有匹配好的,需要加上

[HAOI2009]逆序对数列 - 洛谷 dp[i][j]代表全排列逆序对为j的个数,一个n-1全排列,n比它们都大,n放在至末尾到首位的位置时,逆序对依次增加0,1,2,3..n-1。所以一个dp[i][j]可以由dp[i-1][j-i+1]....d[[i-1][j]转移过来。我们构造前缀和,当j-i+1小于等于零时,我们累加,当大于1时,减去新脱去的即可;

递增 - 洛谷LIS

第三类

最大正方形 - 洛谷  dp[i][j]=min(dp[i-1][j-1],dp[i][j-1],dp[i-1][j])+1

最大正方形II - 洛谷 三维DP  f[i][j][0]=min(f[i-1][j-1][0],min(f[i-1][j][1],f[i][j-1][1]))+1;

[USACO5.3]巨大的牛棚Big Barn - 洛谷同最大正方形,是其应用

最长前缀 Longest Prefix - 洛谷  遍历到当前位置时,遍历各个字符串,若往前推送length()个位置能够组合成,则本位置也可以。 

领地选择 - 洛谷 基于前缀和的暴力枚举

River Crossing S - 洛谷 对于当前奶女个数i,往前推移1-i个,并计算时间  dp[i]=min(dp[i],dp[j]+sum[i-j]+2*m);

Cow Frisbee Team S - 洛谷 分两种情况讨论,dp[i][j]代表前i头牛模数为j的可能,i头牛分为选与不选两种情况,不选dp[i-1][j],选dp[i-1][(j-a[i]+f)%f)]

最大食物链计数 - 洛谷图论中的拓扑排序,入度为0设为1,终点加上起始点,出度为0点为答案;

Likecloud-吃、吃、吃 - 洛谷  三个方向转移而来,三个起点取最大值

木棍加工 - 洛谷 贪心处理,将某一个维度以从大到小顺序排序,这样这一维完全不需要考虑,另一维求能分成多少不上升子序列划分数,根据dilworth定理,就是求最长上升子序列

[USACO04NOV]Apple Catching G - 洛谷dp[i][j] i分钟移动j次,由i-1分钟转移不动转移或移动转移,当j与下落苹果相关联时,加上1

[NOIP2008 普及组] 传球游戏 - 洛谷  dp[i][j]代表传了i次到j人手中,转移为左右两遍,注意边界,且必须先枚举次数,再枚举人,不能颠倒

膜拜 - 洛谷  dp[i]代表划分到第i个人的最小划分数,前缀和预处理,遍历分界点j,当且仅当中间权值差值绝对值在m以内时可以进行状态转移

 编辑距离 - 洛谷 dp[i][j]代表a前i个b前j个 删除当前,意味着i-1与j匹配,插入意味着i与j-1匹配,改变意味着i-1与j-1匹配,i与j匹配(特殊情况,两者相同,无需改变)

求m区间内的最小值 - 洛谷 ST表

忠诚 - 洛谷  ST表

算式 - 洛谷  三维环形DP,难在0的处理,设dp[i][j][k]为i,j之间加入k个乘号的最大值,枚举断点时,断点处加入乘号,也可加入加号,枚举断点之前乘号个数,当后面位置能空出来一个加号时,加上加号。

魔术棋子 - 洛谷dp[i][j][k]代表i,j位置模数k是否可行,要看dp[i-1][j]与dp[i][j-1]中的各个模数乘上a[i][j]是否能达到k

[NOIP2013 提高组] 花匠 - 洛谷 贪心

[USACO06FEB]Treats for the Cows G/S - 洛谷 区间DP,靠两端转移,枚举到i,j时一定是由i-1,j与i,j-1转移过来,也就是说本次不卖i,就卖j。这样由最初1个,扩展到2个,再扩展到3个,最终会全部扩展。

[USACO16JAN]Radio Contact G - 洛谷 dp[i][j]代表第一个走i步第二个走j步能量消耗最小值,由dp[i-1][j-1],dp[i][j-1],dp[i-1][j]转移而来,需要再加上本次消耗。

四方定理 - 洛谷

dp[i][k]代表数字i被k个数组合的方案数,他加等于dp[i-v][k-1]的方案数,v代表本次平方。完全背包,正序枚举,把每个平方看成物体即可。

yyy2015c01 的 U 盘 - 洛谷二分枚举,体积大于mid无法连接,判断条件为dp[V]>=p;

丝绸之路 - 洛谷 dp[i][j]为第i个城市在第j天到达的最小疲劳值,由i-1天的1,2,....j转移

删数 - 洛谷区间DP

封印 - 洛谷 对于每一个位置i,枚举击破点j,满足条件就看看打通,取最小值

迷之阶梯 - 洛谷,对于每一个位置i,开始退步的位置,枚举退步步数,如果能跳到位置i,就更新答案即可

[SDOI2005]区间 - 洛谷 区间并问题,贪心处理,左端点排序,扩展右端点,出现断层,就新开区间。

脑力达人之分割字串 - 洛谷 对符合条件的区间划分,求出最大不相交子区间

HXY和序列 - 洛谷 dp[i][j]代表第i个位置填j的方案数,常规思路是对于j枚举全部整除的数,但会超时。i位置只会受i-1位置上的影响。不如枚举i-1位置的数,用i-1位置数的倍数来整体更新i位置上的方案。

考验 - 洛谷贪心,能删就删

龙兄摘苹果 - 洛谷第二类斯特林数 把n个元素分成k个非空集合的方案数 dp[i][j]=dp[i-1][j-1]+dp[i-1][j]*j  也就是说,第i个数可以自成一个集合,那么i-1个数形成j-1个集合,第i个数也可以放在i-1个数形成的j个集合里,有j种方法

书本整理 - 洛谷去掉书就是保留书,dp[i][j]代表枚举到第i本书时,保留j本书的最优,注意第i本书也需要被保留,最优答案不一定有i,可以通过i+1之后的将i跳过,n也不一定必选,筛选m--n-1就自动屏蔽了n。 保留i本,枚举连接点,枚举连接点保留个数即可

宗教问题 - 洛谷 至少分几个集体与危险值总和不同,第一个贪心处理,第二个使用dp,对于每一个位置i,考虑向前扩展本集合并找承接,一旦本集合种类数大于k,立马终止承接即可;

相似基因 - 洛谷 dp[i][j]代表上i,下j位置时,基因相似度的最大值,可以直接匹配,dp[i-1][j-1]+匹配值,dp[i-1][j] +i位置与空的匹配值,dp[i][j-1],位置j与空的匹配值

通天之潜水 - 洛谷 考察有三,一是二维01背包,倒序遍历 二是,答案字典序最小,也就是只有更优才选,目前出现与之前相同方案并不能选,否则字典序会变大。三是,答案输出,技巧是字符串型答案,状态转移成功就在末尾加上即可,"存char,输出int"

[NOIP2001 提高组] 统计单词个数 - 洛谷 CSDN

「dWoi R1」Sixth Monokuma's Son - 洛谷其实拼成一个完整的矩形环类似于找子序列,分成三种状态即可,左边矩形,中间C型,全体环形。每个位置,能够更新左边矩形,可以继承,可以新开。其余同理。和子序列不同的是,这种状态必须连续,也就是只能从上一状态(i-1)转移而来。

有线电视网 - 洛谷树形DP之树上分组背包,价值为费用,当且仅当价值大于等于0时才是答案;

本节点容量由儿子节点确定,dp[i][j],j为容积,对于一个容积J,枚举儿子容积K即可。选与不选,01背包,倒序枚举,价值为负,体积扩展;

[USACO03FALL]Cow Exhibition G - 洛谷数组平移,dp[400000]代表智商为0时的情况,当前体积为正,则倒序枚举体积,一直到v[i],否则正序枚举体积,一直到800000+v[i]

石子合并(弱化版) - 洛谷区间DP

[BalticOI 2000] Honeycomb Problem - 洛谷dp[i][j][0or1]代表到达i,j位置是否交换时的权值最大值。

交换时,考虑本次交换或者承接,继承本次必须不交换,交换上次必须不交换,取最大情况即可。如果不交换,必须由上一状态转移不交换时而来。

[USACO05MAR]Space Elevator 太空电梯 - 洛谷完全背包,只不过需要先对上限排序,保证大上限能继承小上限。否则,先进行大上限,小上限于大上限之间位置无法转移。

战略游戏 - 洛谷树上DP之最小点集覆盖

[CSP-J2020] 方格取数 - 洛谷三方向DP,转化成下,左右,只要下去一行,就只能一直左或者一直右。也就是说,一个i,j的左,只能由上,和左边的左转移而来,右同理。

「RdOI R3」学习算法 - 洛谷dp[i][j]代表第i天学习第j个算法的方案数,dp[i-1][k]转移而来,还需要排除掉由于本位置加入j导致的连续性被破坏的情况,dp[i-a[i]][k] k!=j,因为这一位置,中间a[j]个,i位置构成了a[j]+2个,我们在上一次(i-1)就已经把它排除,也就是上一位置已经排除了上一位置往前推a[j]个都是j的方案数。本次加上的是包括上一个位置在内a[j]个的方案数。

最大子树和 - 洛谷基础树上dp

跳舞 - 洛谷dp[i][j]代表位置i踩了j次,踩得话,位置i-1踩了j-1次转移而来,不睬的话,dp[i-1][j]转移过来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qinsanma and Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值