随笔分类 -  DP

摘要:长链剖分 顾名思义就是以深度最大的儿子为长儿子做的剖分。 主要思想在于使用指针,使得同一条长链上的 dp 值共用,以达到优化空间复杂度为 O(n) ,以及优化时间复杂度。但是前提是 dp 状态中有深度这一维。 上一个例题具体分析一下。 CF1009F Dominant Indices 题目大 阅读全文
posted @ 2022-03-24 21:16 cbdsopa 阅读(69) 评论(0) 推荐(0) 编辑
摘要:我们通过一道例题引入。 引入 CF1279F New Year and Handle Change 题目大意:给出长度为 n 一个01串(表现为大小写),可以最多选择 ms 长度的子串,全部变为0或1。求操作后的 min(cnt0,cnt1) 的最小值 阅读全文
posted @ 2022-03-21 21:10 cbdsopa 阅读(65) 评论(0) 推荐(0) 编辑
摘要:我们考虑一个问题 玩具装箱 我们很简单可以求出 O(n2) 的巨简单的做法。 我们设 fi 表示 fi=minj<ifj+(sumisumj+ij1L)2 我们考虑用 sx 代替 sumx+x, L 代替 L+1 ,并且把与 $j 阅读全文
posted @ 2022-02-24 08:57 cbdsopa 阅读(32) 评论(0) 推荐(0) 编辑
摘要:用于优化多重背包。 对于每一种物品的可选个数,把它按照二进制拆分出来,如: 24>1+2+4+8+9 然后把这些数分别乘到大小和价值数组里面(每个数开一个)然后跑01背包即可。 因为这样的数可以拼凑出所以需要的情况。 代码实现如下: for(int i=1;i<=n;++i){ int C 阅读全文
posted @ 2022-02-24 08:55 cbdsopa 阅读(33) 评论(0) 推荐(0) 编辑
摘要:模板题链接:P2516 HAOI2010最长公共子序列 我们借题解第一篇的巨佬的图 我们O(n2)的枚举i,j(分别对应两个串的下标) 我们记两串分别为a,b,记dp[i][j]为截止到i,j时的最长公共子序列,如果a[i]==b[j]匹配成功,我们可直接用$dp[ 阅读全文
posted @ 2022-02-24 08:52 cbdsopa 阅读(20) 评论(0) 推荐(0) 编辑
摘要:突然发现自己dp极其菜,背包一个不会/kk(我没开玩笑) 那全部学一遍。 01背包 问题:n 种物品,每种物品有一个大小 vi,一个价值 ci 可以选择一个或不选,求背包容量为 m 的情况下(指所选物品大小之和小于等于m)选择的物品价值和的最大值。 我们可以设 \(f_{i,j} 阅读全文
posted @ 2022-02-24 00:32 cbdsopa 阅读(36) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示