随笔分类 - 动态规划
摘要:"题面" 题解 如果我们知道在这 $2^p$ 种方案中, 每一对 $i, j$ 满足 $i a_j$ 的方案数 那么我们把所有的加起来就行了 考虑 DP 这样一个东西 $f[i][j]$ 为 $i$ 位置上的数大于 $j$ 位置上的数的概率 假设每一次操作有 $\frac{2}{1}$ 的概率进行,
阅读全文
摘要:"题面" 题解 设 $f[u][d][l][r]$ 为 $(u, l)$ 到 $(d, r)$ 这个矩形最小的复杂度是多少 那么转移就是 $$ f[u][d][l][r] = \begin{cases} max(f[u][k][l][r], f[k + 1][d][l][r])+1, k \in [
阅读全文
摘要:"题面" 题解 提供两种方法 线段树分治 将一个物品可以购买的时间区间打到线段树上 考虑对于每一个点如何算贡献 从线段树的根开始做 01 背包 向下递归时记得撤销不同区间的影响 这样每一次询问只会算 $log(t)$ 次, 每一个物品, 只会在 $log(t)$ 段区间中被计算 每次计算的复杂度是
阅读全文
摘要:"题面" 题解 设 $f[i][j]$ 为以 $i$ 为根的子树在 $i$ 选的权值为 $j$ 时的方案数 设 $g[i][j] = \sum_{k = 1}^{j} f[i][k]$ $$ f[u][j] = \prod g[v][j], v \in {Son_u} $$ 然而这是一个 $O(nd
阅读全文
摘要:"题面" 题解 我们取两个点出来分析, 发现如果先手要赢他就必须从他当前的 $i$ 点走到 $j$ 点, 满足$a_i include include include const int N = 3005; using namespace std; int n, a[N], head[N], cnt
阅读全文
摘要:"题面" 题解 发现这个操作的使用顺序是独立的 所以后面的操作我们可以提前用, 前面的操作可以后面再去用 考虑我们当前已经知道了最优解的前 $i$ 项, 现在在求第 $i + 1$ 项 要达到最优解的方式当然有很多, 我们使用过的操作集合为 $s[]$ 那么我们可以任选没有用过的操作, 设使用某些没
阅读全文
摘要:"题面" 题解 如果不是二叉搜索树其实这题就是最小生成树板子题 设 $f[l][r][k]$ 为 $[l, r]$ 这段区间是否可以以 $k$ 为根构成一棵合法的树 转移就是 $$ f[l][r][k] |= f[l][mid][i] \& f[mid + 1][r][j], mid \in [l,
阅读全文
摘要:"题面" 题解 这类问题似乎都会跟容斥扯上一点关系??? 或许是我题做的比较少吧 设 $f[i][j][k]$ 代表至少还有 $i$ 行. $j$ 列没有一个格子被染色, 至少还有 $k$ 种颜色未用到 则有 $$ \displaystyle\\f[i][j][k] = \binom{n}{i}\b
阅读全文
摘要:"题面" 题解 考虑树形 DP , 设 $f[i]$ 为 $i$ 节点为根的子树最大收益是多少, $h[i]$ 代表 $i$ 节点的最优方案是否唯一 转移的话拿个堆记一下子节点中 $ 0$ 的那些, 然后 $h$ 跟他们的与一下 若是剩下来的有 $f = 0$ 或是跟你选的是一样的, 这个点 $i$
阅读全文
摘要:"题面" 题解 最优方案下相邻两个坑肯定不会同时开枪 那如果是链就很好做了 环呢? 讨论一下 1 和 n 谁开枪谁不开枪就行 Code
阅读全文
摘要:"题面" 题解 有一个很简单的 DP 式 $$ f[i] = min(k[i], s[i] + \sum f[j]) $$ 其中 $j$ 是普攻 $i$ 后产生的小怪编号 但是这样转移可能有环 我们考虑使用最短路转移, 对于一对 $(i, j)$ 连边 $i \to j$ 然后初始化每个点都为法术攻
阅读全文
摘要:"题面" 题解 转化问题, 即一个点从根节点往下走, 到达任意一个点时, 保证每一个与他直接连通的点都被覆盖了 没有必要向上走, 因为这只会留更多时间来修复 所以我们讨论只下不上的情况 二分一个 mid , 代表当前共有 mid 个人 设 $f[i]$ 为到了 $i$ 点, 且 $i$ 的儿子全部未
阅读全文
摘要:"题面" 题解 这个数据范围, 直接 DP 一下就完了 看是这个人新开一个圈还是加到别的圈里去 注意, 新开一个圈最少需要三个人 设 $f[i][j]$ 为前 $i$ 个人组成 $j$ 个圈的方案数 $$ f[i][j] = \begin{cases} f[i 1][j] (i 1)\\ f[i 3
阅读全文
摘要:"题面" 题解 斜率优化入门练习题, 不想写题解了 左转 "大仙博客" , 然后你就能切了这道题哦 Code
阅读全文
摘要:"题面" 题解 我们发现挖掘一个点所需要的方块是一个向上的倒三角, 我们设这个倒三角在 $y = 1$ 上的左右端点分别为 $l, r$ 不难发现, 一个 $[l, r]$ 区间仅对应一个点, 也就是说, 每个点所需要的倒三角都是不同的 如果一个区间被另外一个区间完全覆盖, 那么选了大的那个区间,
阅读全文
摘要:"题面" 题解 发现数据范围很小, 考虑从这上面入手 不难发现, 如果我们把所有边的长度排序, 将每条边选与不选看作一个 01 串 假设最优路径长度为 L , 必然存在一个 $K$ , 满足前 $1 \to K$ 都是 1 , 其他的随便 考虑枚举这个 $K$ 设 $f[i][j][k]$ 满足到
阅读全文
摘要:"题解" 题面 返回错误值的方案数就是总方案数减去返回正确值的方案数 于是我们就只要求返回正确值的方案数了 什么时候会返回正确值? 当 $n$ 未出现的时候均未返回就会返回正确值 所以我们设 $f[i]$ 为长度为 $i$ 的序列还没有返回的方案数 有 $$ \displaystyle f[i] =
阅读全文
摘要:"题面" 题解 看到数据范围很容易想到 DP 方程式 设 $f[i][j]$ 代表已经连了 $i$ 条边, 还有 $j$ 个奇数点, 并且方案全部合法的方案数 那么有 $$ \displaystyle \begin{aligned}f[i][j] = &f[i 1][j + 2] \binom{j+
阅读全文
摘要:"题面" 题解 我们先考虑根的情况, 看是否能够最后停在根节点上 我们设两棵子树 $u$ , $v$ , 那么 $u$ 长出一个点, $v$ 再长出一个点, 这两个点的影响就抵消了对吧 那么我们就是看是否能子树内互相抵消最后使榕树之心停在根节点上 最大的一棵子树肯定是最难消的, 我们考虑用其他的子树
阅读全文
摘要:"题面" 题解 把操作放到坐标轴上, $y$ 轴代表黑球个数, $x$ 球代表操作次数 然后对应的操作就可以看作加上 $(1, 1)$ 或 $(1, 1)$ 的两个向量 于是对应的操作序列就变为了一根折线 但是有可能会有重复的情况 我们只计算到达过 $x$ 轴的那一根 并且这是肯定可以实现的 于是我
阅读全文