文章分类 -  xjd的学习笔记

摘要:重链剖分 定义 在维护树上路径信息时,如果带修,树上倍增和树上差分无法维护。如果能把每条路径拆成若干条链,并且重新标号使链的编号连续,就可以用数据结构维护。 定义一个节点子树最大的子节点为重儿子,其余为轻儿子。节点连向重儿子的边为重边,否则为轻边。若干条重边相连为重链,单独一个节点也算重链。这样可以 阅读全文
posted @ 2024-03-01 09:26 lgh_2009 阅读(8) 评论(0) 推荐(0)
摘要:定义 树分治通过分治降低遍历树上路径的复杂度。适用于一些需要遍历树上所有路径的问题。 点分治 过程 钦定某个点为根,对于经过这个点的路径需要有一个快速处理的方式。不经过这个点的路径一定在某一棵子树上,可以删去这个点,对子树递归处理子问题。 为了使子问题的规模尽量小,钦定的这个点应当选择重心,因为重心 阅读全文
posted @ 2024-03-01 09:26 lgh_2009 阅读(13) 评论(0) 推荐(0)
摘要:概述 笛卡尔树是一种特殊的二叉树,每个节点有两个值 \(x,y\),\(x\) 满足二叉查找树的性质,\(y\) 满足堆的性质。即 \(x_{lson(u)}<x_u<x_{rson{u}}\),\(y\) 根据堆的种类有 \(x_{lson(u)}<x_u\wedge x_{rson(u)}<x_ 阅读全文
posted @ 2024-03-01 09:26 lgh_2009 阅读(21) 评论(0) 推荐(0)
摘要:。 阅读全文
posted @ 2024-03-01 09:22 lgh_2009 阅读(12) 评论(0) 推荐(0)
摘要:概述 在某些题目中,状态里需要添加很多 bool 类型的状态,比如表示一些元素是否在集合中。当这种状态过多,可以将其压缩为一个二进制数。 比如 \(101001\) 表示 \(1,3,6\) 为真,\(2,4,5\) 为假。 例题 P2915 状压 DP 题一个主要特征是数据范围很小,如本题中 \( 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(7) 评论(0) 推荐(0)
摘要:概述 一种简单的 DP 技巧,可以在某些单调栈题中使用,相对单调栈更好理解。 例题 P4147 最大子矩形问题。 首先算出 \(l_{i,j},r_{i,j},u_{i,j}\),分别表示一个点向左、右、上可以走多少格,容易递推。 for(int i=1;i<=n;i++){ for(int j=1 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(11) 评论(0) 推荐(0)
摘要:概述 数位DP解决的是有关数字每一位的问题。一般形式为统计一个区间内满足一些限制的数的数量。 例题 HDU3555 首先把数字拆位: for(maxn=0;temp1;)n[++maxn]=temp1%10,temp1/=10; 数位DP可以采用记搜的方式转移。反向统计不含 \(49\) 的个数,设 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(8) 评论(0) 推荐(0)
摘要:树形DP 树形DP,就是在树上DP,一般会在DFS中进行。 例题:P1352 一般遇到考树的题目,先想链上的做法,然后推广到树。链上的问题是这样的: \(n\) 个职员,选择若干个参加宴会,相邻的不能同时参加,问快乐指数之和的最大值。 设 \(f_{i,j}\),其中 \(j\) 是布尔值,表示前 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(10) 评论(0) 推荐(0)
摘要:概述 决策单调性是 DP 的一种性质。 用 \(a\)D / \(b\)D 描述一个 DP 方程,其中 \(a\) 表示状态数为 \(O(n^a)\),\(b\) 表示一个状态的转移需要用到 \(O(n^b)\) 个之前的状态。 决策单调性一般体现在 1D / 1D 或 2D / 1D 的 DP 中 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(32) 评论(0) 推荐(0)
摘要:概述 单调队列优化DP是通过单调队列将转移方程中取最值的部分 \(O(1)\) 求出以优化复杂度。 转移方程通常是这样的:\(f_{i,j}=\max\{f_{i-1,k}+V\}+C\) 或 \(f_{i,j}=\min\{f_{i-1,k}+V\}+C\)。其中 \(V\) 仅和 \(k\) 有 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(9) 评论(0) 推荐(0)
摘要:概述 背包问题是最基本的动态规划模型,大概为: 有 \(n\) 件物品,拿一件物品有 \(v_i\) 的价值和 \(w_i\) 的花费,有一定限制,最多花费 \(W\) 的代价,问价值最多为多少。 简单背包问题 有 \(n\) 件物品,拿一件物品有 \(v_i\) 的价值,问能否从中选取若干件总价值 阅读全文
posted @ 2024-03-01 09:21 lgh_2009 阅读(5) 评论(0) 推荐(0)