合集-dp

摘要:一道非常综合的背包题。 我们发现每一个点的选择对它的父亲的合成有影响。 这样的话我们可以尝试把这个因素记下来。 \(f_{rt,i,j}\) 来表示 \(rt\) 及它的子树中选择 \(i\) 个作为合成的材料的话,花费 \(j\) 的最大战斗力。 这样的话我们就可以直接用多重背包来写了。 先枚举 阅读全文
posted @ 2025-02-09 12:45 hnczy 阅读(69) 评论(0) 推荐(0)
摘要:矩阵乘法 对于线性简单的 dp 可以使用矩阵快速幂加速转移,可以从 \(O(n)\) 的时间复杂度降到 \(O(k^3\log n)\) ( \(k\) 为矩阵的大小,通常小于10) 先给出矩阵乘法的模板代码: struct MAT { int c[15][15],n,m; MAT() { mems 阅读全文
posted @ 2025-02-09 12:47 hnczy 阅读(90) 评论(0) 推荐(0)
摘要:不带删的尺取。 这个技巧其实是一个运用双栈来模拟队列的一个应用,尺取可以理解为一个队列。 其实就是用一个栈来记队头,一个栈来记队尾,每个栈记对应的对应点记每个点的权值或下标,和它所对应栈的前缀。 每一次入栈时直接入栈(队头)更新前缀即可,而出栈时,若栈(队尾)已经空了,这时就应该把队头的栈直接倒着插 阅读全文
posted @ 2025-02-10 20:52 hnczy 阅读(90) 评论(0) 推荐(0)
摘要:数位dp的标志: 要求统计满足一定条件的数的数量(即,最终目的为计数); 这些条件经过转化后可以使用「数位」的思想去理解和判断; 输入会提供一个数字区间(有时也只提供上界)来作为统计的限制; 上界很大(比如 \(10^{18}\)),暴力枚举验证会超时。 数位dp的模板题 A - 不要62 实现非常 阅读全文
posted @ 2025-02-09 12:48 hnczy 阅读(119) 评论(0) 推荐(1)
摘要:斜率优化dp 的小总结 首先下凸包/上凸包的求法可以使用单调队列/单调栈来实现。 #include <bits/stdc++.h> #define int long long using namespace std; const int N = 5E5 + 5; struct node { int 阅读全文
posted @ 2025-02-09 12:47 hnczy 阅读(69) 评论(0) 推荐(0)
摘要:这题很好的 dp 题 首先我们知道这个 \(q\) 数据范围明显是诈骗的,最多就跟 \(n\) 同阶。 那我们的复杂度就大概是 \(O(n^2)\) 很明显使用 dp 来实现这个过程的,设一个 \(dp_{i,l,r}\) 表示在第 \(i\) 次中这个区间为 \(l\sim r\) 是否可能,这个 阅读全文
posted @ 2025-04-24 19:36 hnczy 阅读(34) 评论(0) 推荐(0)
摘要:考场上写出抽象 \(O(n^5)\) 拿下了高达 45pts。 好吧这个根据题意可以拿下 \(O(n^4)\) 的分数。 然后发现你只能继续优化。然后你会感叹这个东西也太抽象了吧,根本优化不了一点。 首先这个 \(n\) 非常的小,导致我们甚至可以把每一个区间的平均数算出来当做一个权值。 好吧,到这 阅读全文
posted @ 2025-04-29 22:06 hnczy 阅读(29) 评论(0) 推荐(0)
摘要:dp 优化题,很好的一道题,有紫的难度。 很容易有一个 \(O(n^2)\) 的时间复杂度,可得到 15pts。 但是这转移很抽象了,明显不能用一般的优化。 由于这个区间肯定是偶数的,所以想到这个转移大概和奇偶有关,枚举到奇数和偶数完全不同,奇数和偶数也不相干。 想到可以分析红蓝对答案的限制来求出答 阅读全文
posted @ 2025-05-04 11:01 hnczy 阅读(39) 评论(0) 推荐(0)
摘要:原题链接 非常综合的一道 dp 好题。 先对 \(x\) 排序。 首先可以想到这题的关键的是最大的 \(S\) ,其次是最小的面积。所以这个长度就是最长上升子序列的长度,所选的 \(S\) 也必须是一个 LIS ,像这样选一个 LIS 的题目可以对数据分层,\(f_i\) 是 \(i\) 为右端点的 阅读全文
posted @ 2025-07-12 18:52 hnczy 阅读(18) 评论(0) 推荐(0)
摘要:树形 dp 的一道好题。 在一个图上做 dp 是非常难的,一个常见的思路就是图转化成树,树转化成链。那么我们对这个图做一个生成树。明显地,非树边都是返祖边,这个性质对树形 dp 非常好。 而我们又发现了树的直径至多为 \(10\)。这启示我们需要用状压的方式来写,而题目又是一个类树上最大独立集的东西 阅读全文
posted @ 2025-07-17 15:49 hnczy 阅读(9) 评论(0) 推荐(0)
摘要:SHOI2015 聚变反应炉 题解 神秘数据分治题。 看 \(c\le 1\) 的点,发现先遍历 \(c=1\) 再遍历 \(c=0\) 的收益最高,贪心做即可。 看 \(n\le 2000\) 的点,发现 \(c\le 5\) 很有性质的样子,但是瞪不出来。发现可能是一个 \(O(n^2)\) 的 阅读全文
posted @ 2025-08-26 11:03 hnczy 阅读(37) 评论(0) 推荐(0)
摘要:手玩一下样例和一些小一点的数据发现,在操作之后肯定只剩下左下角和右上角的两部分没有被遍历到,这跟题目保证的两个点肯定有相互到达的道路有关。 左下角和右上角是差不多的,这里就以左下角作为例子进行 dp。 令 \(dp_{i,j}\) 为需要解决 \((i,j)\) 及其左下角的矩形的最小花费,而当我们 阅读全文
posted @ 2025-08-27 16:12 hnczy 阅读(26) 评论(0) 推荐(0)