随笔分类 - 各种DP
摘要:传送门 显然是DP 但是交换会改变后面的状态,好像很麻烦 我们设 f [ i ] [ j ] [ k ] 表示到了第 i 个字符,j 交换了 j 次,k 交换了 k 次后最多的匹配数 我们每次只考虑当前要改变的字符,而不考虑具体跟谁交换 那么在一个状态中,如果j > k 说明还有 j-k 个 'j'
阅读全文
摘要:传送门 看到数据范围就知道是搜索或状压DP 算了一波复杂度搜索好像过不了极限数据 搞状压 设 f [ i ] 表示所有猪的状态为 i (二进制下1表示死了,0表示没死)时需要的最少发射次数 设 p [ i ] [ j ] 存经过第 i 只猪和第 j 只猪的抛物线经过的猪的状态(可以$n^2$预处理出
阅读全文
摘要:传送门 十分显然的DP 设 f [ i ] [ j ] [ k ] [ 1/0 ] 表示当前考虑到 A 串第 i 位,匹配到 B 串第 j 位,已经划分了 k 分,当前为 选 or 不选 如果 A [ i ] ≠ B [ j ] 那么当前位不能选,则只有一个转移 f [ i ] [ j ] [ k
阅读全文
摘要:传送门 很显然的DP 我们设 f [ i ] [ j ] 表示在位置 i , j 时需要的最少的点击次数 考虑不点击的影响 f [ i ] [ j ] = f [ i-1 ] [ j + y [ i ] ] 如果点击 f [ i ] [ j ] = f [ i-1 ] [ j - x [ i ] ]
阅读全文
摘要:传送门 n 个关卡有 n-1 个限制 所以这些限制构成一颗树 考虑树形DP 对一颗子树单独考虑 考虑有多少种顺序 设 f [ i ] 表示节点 i 的子树的总方案数 考虑儿子节点如何与父节点合并 发现父子之间有限制条件,所以 f 多加一维 f [ i ] [ j ] 表示节点 i 在子树中排第 j
阅读全文
摘要:传送门 翻译有些不清楚,意思就是骨牌不一定要按从左到右的顺序放,可以左边放一个,右边放一个,再中间放一个 然后每个骨牌都可能往左或往右倒,一旦倒了,倒的一边的所有骨牌都要重新放 然后问你,最小期望放置次数是多少 考虑每个骨牌的影响,设$f [ i ]$ 表示放$ i $个骨牌的的最小期望放置次数 那
阅读全文
摘要:传送门 期望DP 设 f [ i ] 表示还有 i 个名字没得到,集齐所有名字的期望购买次数 考虑一次购买的影响: 如果得到以前没有的名字 f [ i-1 ] -> f [ i ],如果得到有的名字 f [ i ] -> f [ i ] 那么可以得到 f [ i ] = f [ i-1 ] * (n
阅读全文
摘要:传送门 思维难度很大的DP 设 f [ i ] 表示长度为 i 的山脉的合法方案数 考虑枚举最高的山的位置 j 那么在不考虑 j 左右两边是山谷或山脉的情况下 f[ i ] += f[ j-1 ] * f[ i-j ] * C[ i-1 ] [ j-1 ](C[ i-1 ] [ j-1 ] 表示i-
阅读全文
摘要:传送门 好好读题 读懂了题后就不难了 可以发现和强联通分量的定义有点像 强连通的要求:对于任意两点u,v都存在一条路径使得 u->v 并且 v->u 而半联通的要求:对于任意两点u,v都存在一条路径使得 u->v 或者 v->u 那么显然一个强联通分量肯定属于半联通子图 那先考虑缩点,看看缩点后的情
阅读全文
摘要:传送门 算法:Tarjan & DP 显然缩点后的图是一个DAG DAG上搞DP是基本操作啊 按拓扑序搞一波DP就好了 设 f[ i ] 表示从起点抢劫到 DAG 上的点 i 时能得到的最多的钱 那么 f[ i ] = max( f [ i ] , f[ j ] + sval[ i ]) ( j 有
阅读全文
摘要:传送门 做菜主要是按时间顺序,所以可以考虑DP 但是可能后面的人会先打饭 可以发现同学最多只能让后面的第7个同学先打饭 可以从这里入手考虑问题 把每8个一起的同学看成一个状态 在他们之前的人都已经打好饭了 想象一个从左往右的队列 从1~i-1 的同学都打完饭了 然后需要知道的状态是 i~i+7 共8
阅读全文
摘要:传送门 AC自动机 考虑一位一位填字符 一旦包含了单词(即经过了结束标记或fail上的结束标记) 那么后面不管填什么都是一篇可读的文章 如果一共要填 m 个单词,当前填到了第 i 个字符就一定可读了 那么后面每个字符都有 26 种填法,所以方案就多了 26^(m-i) 种 然后打了个 30 分的搜索
阅读全文
摘要:传送门 数位DP 考虑从右边最小的一位,一位一位填数,填到最大一位 对于 a' b' 各可填 0 或 1 但是发现如果 a' b' 都填一,更高一位会进1 所以要多一维表示更高一位是否为 1 那么设 f [ i ] [ j ] [ k ] [ l ] [ 0/1 ] 表示填到第 i 个数,a' 填了
阅读全文
摘要:传送门 DP 十分显然的DP,但是不好写 设 f[ i ] 表示以第 i 个数作结尾时的方案数,原序列为 a 如果不考虑相同的序列: 那么转移就是 Σ f[ j ] (0< j < i && a [ j ] < a [ i ]) 复杂度为 O(n^2) 考虑优化: 先去重 ,得到数组 b 每次把f
阅读全文
摘要:传送门 DP+字典树 设 如果存在一种分法,使得第 i 个字符能被理解,并且 i 为此分法中的最后一个字符 (显然也是最后一个单词的最后一个字符) 那么 f [ i ] = 1 那么就是要求最大的 i 使得 f [ i ] = 1 考虑如何转移 如果知道了 f [ i ] = 1 那么 f[ i+l
阅读全文
摘要:传送门 期望DP 刚开始想的就是DP 设 f [ i ] [ j ] 表示已经进行了 i 轮,庄家为 j 但是发现好像转不了... 不知道哪些人被踢出去了... 看一下数据,好像搞不了状压 那么换种思路 从 结束状态 往 开始状态 推 不需要知道具体哪个人是庄家,只要知道与庄家相对位置为 x 时的获
阅读全文
摘要:传送门 期望DP 因为 课程是按时间顺序的,后面的变化不会影响前面的结果 对于每个时间段的课,只有两种选择(换 or 不换) 那么 显然 $DP$,而且 好像 转移也很好写... 显然设 $dp [ i ] [ j ]$ 表示到了第 i 个时间段,已经提交了 j 节课的申请时的最短期望路程 写到一半
阅读全文
摘要:传送门 计算长度期望嘛 期望长度 = 长度 * 走这条边的概率 概率很好求 按照拓扑序跑一下DP就好了 设 s [ i ] 为走到这点的概率,j 为 i 的后继节点,k为 i 的后继节点总数 s [ j ] += s[ i ] / k 走边(i,j)的概率显然就是 k 就是期望DP的入门题...
阅读全文
摘要:传送门 花圃只有两种 m最大为5 可以把C形的花圃看成 1 ,其他的看成 0 每m个花圃看成一个状态,只有 2^5 种状态 显然状态可以互相转移 比如说第 1~5 个花圃为一个状态 它可以转移到第 2~6 个花圃的一个状态 那筛一下可以转移的状态,然后跑DP就可以了 设 f [ i ] [ j ]
阅读全文
摘要:传送门 显然可以DP 设 f [ i ] [ j ] 表示已经换了 i 次车,现在在 j 号车站(j = 1~8 分别表示A~H)时的方案数 那么 f [ i ] [ j ] = f [ i-1 ] [ j-1 ] + f [ i-1 ] [ j+1 ] 注意一下当 j=1 和 j=8 时的情况 还
阅读全文