摘要: 状压 dp 空间优化技巧: 滚动数组 提前预处理出有效状态 T1 典题限时返场。 上次讲的时候的代码用到了滚动数组,这次讲第二种优化。 其实很简单,就是在 dp 前将所有状态枚举一遍,将同行冲突的判掉,合法的用 \(st_i\) 存储即可。 方法很 bf,但经试验可以发现一千多状态中仅有几十个合法的 阅读全文
posted @ 2024-04-29 22:04 _XOFqwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 状压 dp: 是对 dp 状态表示的优化。 若有多个维度,每个维度仅有 \(0/1\),则将状态转为一个二进制数,并以十进制数表示。 位操作(全 文 背 诵): 任意二进制数位 \(\operatorname{and} \ 1\) 得本身。 任意二进制数位 \(\operatorname{xor} 阅读全文
posted @ 2024-04-20 19:02 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 妙妙题大合集。 T1 令 \(dp_{i,j}\) 表示分离出以 \(i\) 为根的恰含 \(j\) 节点的树所需的最小删边数。 有初始状态 \(dp_{i,1}=\) 其子节点个数,其余为 \(\infty\)。 对于答案,我们考虑到对于每个节点 \(i\),除了其子树内的删边数之外,它的父节点与 阅读全文
posted @ 2024-04-13 21:42 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 本期题目均为 \(\texttt{II}\) 类树形 dp,即树上多重背包。 T1 令 \(dp_{i,j}\) 表示以 \(i\) 为根的子树保留 \(j\) 条边的最大边权。 答案即为 \(dp_{1,q}\),因为不管 \(1\) 连着的边选 / 不选,答案都会上传到根。 当然如果你愿意,求一 阅读全文
posted @ 2024-03-30 21:36 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 树形 dp:在树形结构上的 dp 问题。 \(\texttt{I}\) 类树形 dp:兄弟子树间无数量约束关系。 \(\texttt{II}\) 类树形 dp:兄弟子树间有数量约束关系(即树上背包 / 有依赖的背包)。 本期题目均为 \(\texttt{I}\) 类树形 dp。 T1 令 \(dp_ 阅读全文
posted @ 2024-03-23 23:22 _XOFqwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要: T1 构思分讨。 很自然地,我们令 \(dp_{i,j}\) 表示 \([i,j]\) 的初始字母方案数。 但是这个状态信息过少,不足以解决此问题。 于是我们增加状态维度,令 \(dp_{i,j,0/1/2/3}\) 表示 \([i,j]\) 是否能由 W/I/N/D 演变而来。 答案即为 \(dp 阅读全文
posted @ 2024-03-16 19:01 _XOFqwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 双倍经验:P2758。 令 \(dp_{i,j}\) 表示 \(s\) 前 \(i\) 个字符要变成 \(t\) 前 \(j\) 个字符所需的最少移动次数。 答案即为 \(dp_{\lvert s \rvert,\lvert t \rvert}\)。 显然有初始状态 \(dp_{i,0}=dp_{0 阅读全文
posted @ 2024-03-16 17:35 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: T1 令 \(dp_{i,j}\) 表示卖出区间 \([i,j]\) 能获得的最大价值。 显然答案为 \(dp_{1,n}\)。 因为只能卖 \(i\) / \(j\),所以有转移: \[dp_{i,j}=\max(dp_{i+1,j}+v_i \times (n-len+1),dp_{i,j-1} 阅读全文
posted @ 2024-03-09 22:01 _XOFqwq 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解模拟、枚举算法。 例题 T1 简单模拟题。 利用 scanf/cin 以 int 形式读入分和秒,并令秒循环累加,逢 \(60\) 归 \(0\) 并向分进 \(1\),分则是逢 \(24\) 归 \(0\)。 在循环的过程中若分秒合起来是回文数字,则退出循环,按照题目格式输出当前时间。 阅读全文
posted @ 2024-03-09 12:50 _XOFqwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 本期主要讲解 vector、map 两个 STL 容器。 知识点: 首先,引入两种数组的区别: 静态数组,指提前声明需要多少内存的数组,是连续的; 而动态数组则是在插入元素时临时指定存储空间,不要求连续。 STL vector 是一个动态数组,下标默认从 \(0\) 开始。它支持的操作如下: 定义: 阅读全文
posted @ 2024-03-09 12:49 _XOFqwq 阅读(1) 评论(0) 推荐(0) 编辑