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

浙公网安备 33010602011771号