随笔分类 - OI / 动态规划dp
摘要:一本通题解 T2: 再也不想碰这道题了。。。写了一下午。 我们先设状态 表示前i个刷匠,考虑了前 个木板后所获得的最大价值( 个木板可以有空余)。 然后枚举前 个刷匠,枚举每一条木板。 对于一条木板可以此刷匠根本不刷,或不刷当前木板,状转方
阅读全文
摘要:状压dp 应用背景以集合为状态,集合一般可以用二进制表示,用二进制的位运算处理 集合问题一般是指数复杂度的,例如:1.子集问题,设n个元素没有先后关系,那么一共有 个子集;2.排列问题,对所有n个元素进行全排列,共有 个排列 状态压缩:主要就是dp的一种状态,与dp转移
阅读全文
摘要:树形dp 树上做dp非常常见,因为树本身有子结构性质(树和子树) 一般解题思路:先把树转化为有根树(如果不连通的树,就加一个虚拟根,它连接所有孤立的树),然后在做dfs,递归到叶子节点,再一层层返回信息,就在这一步做dfs P2015 二叉苹果树 定义状态 表示以节点u为根
阅读全文
摘要:数位dp T3: 应该先从这道题入手数位dp,首先理解数位dp,dp了什么东西 它是把一个数从低位拆到高位,相当于是较低位的方案数是较高位的子问题 个人认为数位dp写记忆化搜索更容易理解一点 看这道题,首先我们让我们分别求 在 出现的次数,我们先把 分
阅读全文
摘要:区间dp 先在小区间上进行dp得到最优解,然后再合并小区间的最优解求得大区间的最优解,解题时,先解决小区间的问题,再将小区间合并为大区间,合并操作一般是将两个相邻区间合并 注:合并顺序从小区间到大区间,因该先从小到大枚举区间的长度,递推出j在哪里 一本通题解 T3: 2025.1.23补档: 我之前
阅读全文
摘要:线性dp理解 递推/记忆化搜索,有很多种理解方式 递归重叠子问题的记忆化搜索: 像这里例如 可以通过一次计算得到,保存答案,下一次直接调用即可,省去很多复杂度 我们从此引出dp第一个性质:最优子结构 大问题的最优解包含小问题的最优解,并且小问题的最优解可以推导出大问题的最优解 递推
阅读全文