随笔分类 -  动态规划

摘要:高维前缀和(SOS DP) 通常求二维前缀和,用容斥来求 但其实,完全可以先做一遍行的前缀和,再做一遍列的前缀和 拓展到 \(k\) 维也是如此,可以在 \(O(nk)\) 的复杂度求前缀和 但怎么和 DP 扯上关系? 可以把第 \(i\) 维当作阶段,每一维的具体信息是状态 先枚举阶段,表示当前固 阅读全文
posted @ 2024-02-14 22:24 KellyWLJ 阅读(181) 评论(0) 推荐(0)
摘要:思路:按区间的 \(len\) 从小到大 DP,枚举左端点,算出右端点,再枚举中间的分界点转移 有可能是向左右两端各扩展 \(1\) 步 还有时要记录在左/右端点,分开转移 把问题划分为区间长度更短的最优子结构 注意 \(len=1\) 时初始化及边界 P4342 [IOI1998]Polygon 阅读全文
posted @ 2024-02-14 22:23 KellyWLJ 阅读(34) 评论(0) 推荐(0)
摘要:以 P5785 [SDOI2012]任务安排 为例 朴素方程 其实也没那么简单,第一眼想法是设 \(f(i,k)\) 表示以 \(i\) 为结尾,共分了 \(k\) 段的总方案数 \[f(i,k)=\min_{j=0}^{i-1} f(j,k-1)+(sumc_i-sumc_j)\cdot( sum 阅读全文
posted @ 2024-02-14 22:21 KellyWLJ 阅读(47) 评论(0) 推荐(0)
摘要:slope trick 对于一类 DP 问题,DP 状态是二维的 \(f_{i,j}\),且 \(f_i\) 可以看作一个关于 \(j\) 的线性的连续凸分段函数 转移时可以直接维护这个函数而优化复杂度 维护操作 以下凸函数为例 我们维护第一段函数的斜率 \(k\),用数据结构维护出斜率每变化 \( 阅读全文
posted @ 2024-02-14 22:19 KellyWLJ 阅读(118) 评论(0) 推荐(0)
摘要:矩阵乘法 我们有一个 DP 式,它的转移系数相对固定,不受 DP 值的变化而变化,可以递推 且它通常有一或两维状态,可以分为很多阶段,但每个阶段中状态数不多 现在我们要递推很多次,是线性复杂度接受不了的 便把 DP 的式子写为矩阵的形式,一般在 $O(w^3\log n)$ 复杂度内计算($w$ 为 阅读全文
posted @ 2023-03-19 23:52 KellyWLJ 阅读(70) 评论(0) 推荐(1)