动态规划
lasomisolaso~
这个作者很懒,什么都没留下…
展开
-
牛客练习赛1 树 dp + dfs序
题目链接 题解: 一开始考虑树形DP自底向上更新发现儿子多的时候情况太多,无法考虑。 可以按照dfs序对树上的点一个个进行染色。这样对一个节点x进行染色的时候,它的父亲节点已经被染色了。 定义状态dp[i][j]dp[i][j]dp[i][j]为dfs序中前iii个节点用jjj种颜色染色有多少种方案。 对于第iii个结点进行染色时有两种选择: 选择前i−1i - 1i−1个结点已经用过的颜色。那...原创 2020-04-09 21:24:56 · 226 阅读 · 0 评论 -
kuangbin dp基础个人部分总结
主要是一些典型的问题。学艺不精,欢迎指出错误POJ 2533 Longest Ordered Subsequence(LIS裸题)HDU 1069 Monkey and Banana(转化LIS)HDU 1160 FatMouse's Speed(转化为LIS)HDU 1074 Doing Homework(状压DP)POJ 2533 Longest Ordered Subsequence...原创 2019-07-17 17:14:57 · 211 阅读 · 0 评论 -
洛谷P1140 相似基因(线性DP)
题意: 给出两个给定长度的基因串,然后给出各个碱基之间匹配的相似度,碱基也可以与空碱基配对,问这两串基因匹配的最大相似度。 做法: 首先是自己yy了一个类似及其麻烦的做法,然后发现字符串的长度是不定的,不一定第一个基因串一定比第二个基因串长,错的一塌糊涂。下面是正解。 dp[i][j]表示前i个碱基与前j个碱基匹配的情况,只看它们匹配结果的结尾可以分为三种情况: 1.i与j匹配 2.i和空格匹配 ...原创 2019-08-07 19:27:10 · 264 阅读 · 0 评论 -
洛谷 P1136 迎接教主【线性DP】
思路: 线性DP 我们可以定义状态dp[i][j][k]表示前i个字符,‘j’改变成’z’ j 次,‘z’改变成’j’ k次。 交换两个字母,不会做无谓的操作,即不会交换两个相同的字母,所以交换m次,就会有m个’j’变成’z’,m个’z’变成’j’。所以在j==kj==kj==k的时候就是交换的的时候,这时候更新答案。 遍历每一个字符,首先让dp[i][j][k]=dp[i−1][j][k]...原创 2019-09-18 20:41:51 · 150 阅读 · 0 评论 -
Educational Codeforces Round 73 (Rated for Div. 2) D. Make The Fence Great Again(DP)
题意: 给出一排木板的高度和将这些木板提升1个高度的代价。问使这些木板达到没有相邻的两块木板相等的情况的最小代价。 思路: 二维DP 本题关键:对于每一块木板,最多提高两次。 如果一个木板提高了三次才和两边的木板高度不等,那么提高两次一定和某个木块相等,同理也有一个木块等于提高一个的长度。那么这个木块就干脆不提高就行,这与提高三次矛盾。 所以可以得出最多提高两次的结论。 根据这个结论就可以定义状态...原创 2019-09-21 01:37:39 · 163 阅读 · 0 评论