文章分类 - 动态规划 dp
1
摘要:题目传送门 思路 暴力思路就是以每个查询节点 \(u\) 为根,然后 \(dfs\) 来看是否有深度为 \(d\) 的节点。 暴力里面蕴含着换根 \(dp\) 的思想,所以考虑换根。 首先可以以 \(1\) 为根 \(dfs\) 算出每个节点的深度,然后以每个节点的 \(dfs\) 序为下标来建立一
阅读全文
摘要:题目传送门 思路 确定算法 首先,一个物品能不能选,还要看有没有选前提物品; 其次,物品种类很少,只有 \(n \leq 15\); 因此,我们可以确定用 状压 \(dp\) 来求期望。 状态设计 首先,肯定要有记录当前是第 \(i\) 轮的一维; 其次,由于拿物品还要看已有物品集合,所以要有记录【
阅读全文
摘要:题目传送门 前言 终于自己想出概率期望 \(dp\) 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 \(Floyd\) 最短路求出两点间最短距离 \(dis_{i, j}\)。 对于 \(m = 0\),答案就是 \(\s
阅读全文
摘要:题目传送门 思路 状态设计 设 \(dp_{i, j}\) 表示袋中有 \(i\) 个白鼠和 \(j\) 个黑鼠时,\(A\) 能赢的概率。 状态转移 现在考虑抓鼠情况: \(A\) 抓到白鼠:直接判 \(A\) 赢,概率是 \(\frac{i}{i + j}\); \(A,B\) 都抓到一只黑鼠,
阅读全文
摘要:题目传送门 思路 状态设计 我们可以想象先把所有牌倒入一个袋子中,然后在一个一个取。 设 \(dp_{i, j}\) 表示目前袋中有【\(i\) 个红牌】和【\(j\) 个黑牌】。 状态转移 现在考虑从袋子中抓牌: 抓到的是红牌: 抓到红牌的概率是 \(\frac{i}{i + j}\),抓后袋子中
阅读全文
摘要:题目传送门 思路 很明显是概率 \(dp\)。 状态设计 由于所要求的与【天数】和【所拿物品种类】相关,所以设 \(dp_{i, j}\) 表示在第 \(i\) 天拿完后,已经拿了 \(j\) 中物品。 状态转移 考虑如何在前 \(i\) 天得到 \(j\) 中物品: 在前 \(i - 1\) 天,
阅读全文
摘要:题目传送门 思路 状态设计 考虑到让求在第 \(n\) 轮比赛(决赛)中获胜概率最大的球队。因此,我们需要知道每一轮中,每个队伍的获胜概率。\(\\\) 因此设 \(dp_{i, j}\) 为在第 \(i\) 轮时,\(j\) 获胜的概率。\(\\\) 转移方程 由于我们要知道球队 \(j\) 在第
阅读全文
摘要:题目传送门 前言 再次败在 \(dp\) 手下,但是数据范围这么小应该是可以看出是 \(dp\) 的(毕竟对于其他组合数的问题数据范围都是 \(10^9\) 起步)。 思路 题意简化 现有 \(1, 2, 3, ... , n - 1, n\),从其所组成的 \(2^n - 1\) 个非空集合中选出
阅读全文
摘要:题目传送门 前言 第一次见这么新颖的 \(dp\),竟然可以从当前枚举的 \(i\) 的前面或者后面转移过来,这不就有后效性了吗? 好了开玩笑 其实只要状态设计好,还是没有后效性的。 思路 状态设计 首先 \(B_i \leq 7\),所以肯定是状压 \(dp\),所以一定起码有两维:一维是当前枚举
阅读全文
摘要:题目传送门 暴力 状态设计 设 \(dp_{i, j}\) 表示目前放到第 \(i\) 个花圃,且最近 \(m\) 个花圃的状态是 \(j\)(\(C\) 形花圃用 \(1\),\(P\) 形花圃用 \(0\) 表示)的方案数。 状态转移 当前状态为 \(j\) 时,上一个状态就是 \(j >> 1
阅读全文
摘要:题目传送门 思路 状态设计 像这种字符串匹配的题,状态设计里一定有一维代表目前匹配到了第 \(i\) 位。 所以,我们设 \(dp_{i, j}\) 表示目前 \(T\) 串已经匹配到了第 \(i\) 位,且匹配的 \(S\) 串的状态为 \(j\)。 状态转移 假设现在状态为 \(j\),我们就枚
阅读全文
摘要:题目传送门 前言 虽然是一道非常基础的状压 \(dp\)(在洛谷上甚至是道驴蹄),但是我调了两个晚自习,最后发现是竟然是状态设计有问题。 所以在此篇题解中,我不但会说出正确做法,还会说出原本的代码错在哪里。 以警醒自己状态设计正确的重要性 错误思路 设 \(dp_s\) 表示从 \((0, 0)\)
阅读全文
摘要:题目传送门 前言 别人说这是道简单题,随便搞搞就过了。但我并不觉得 (光状态设计第一步就被卡住了),pdf 了。颓题解了,写篇题解谢罪。 状态设计 设 \(dp_i\) 表示硬币状态为 \(i\) 的情况下,最多可以买到第几个物品 (非常创新的状态设计)。 状态转移 枚举当前硬币状态,由于每次只能使
阅读全文
摘要:题目传送门 前言 虽然是一道比较好想的状压 \(dp\),但是它深深使我我感受到【简洁而快速的二进制操作】对状压 \(dp\) 的重要意义。 暴力思路 & 代码 设 \(dp_s\) 为表示:状态 \(s\) 所代表的人们过桥所需的最少时间(\(s\) 的二进制中,从右往左数第 \(i\) 若为 \
阅读全文
摘要:这道题算是我做过所有的单调队列优化 \(dp\) 题目中最难想的一道题,所以写篇题解再捋捋思路。 暴力 首先很容易想到设 \(dp_i\) 表示将前 \(i\) 个数划分成若干序列,【每个序列的最大值之和】的最小值。 那么就会有: \[dp_i = min \begin{Bmatrix} dp_j
阅读全文
摘要:暴力 思路 首先将每个木匠按 \(s_i\) 升序排序。 设 \(dp_{i, j}\) 为前 \(i\) 个工匠涂前 \(j\) 个木板所获得的最大收益(注意: 有些木板可以不涂,或者说最大收益的涂法 涂不到 某些木板)。 所以我们可以得到如下转移方程: 若第 \(i\) 个木工选择不涂或 \(j
阅读全文
摘要:思路 先设 \(dp[i][j]\) 为区间 \([i, j]\) 的队形方案数。 考虑如何转移:对于区间 \([i, j]\) 来说,最后一个入队的要么是 \(i\),要么是 \(j\)。 所以分类讨论: 当 \(j\) 为最后一个入队的时,\(i\) 与 \(j - 1\) 都可能是倒数第二个入
阅读全文
摘要:特征 是一种树形 \(dp\); 所给出的树形结构为无根树,或某两个相邻的点的父子关系是不确定的; 要求求出每个节点答案。 解法 一般进行两次 \(dfs\): 第一次指定一个节点为根(通常为 \(1\))进行第一次 \(dp\),求出整个树在以 \(1\) 为根时的答案; 第二次进行换根,一般是将
阅读全文
摘要:题目传送门 其实看到正解是 区间DP 时还是很震惊的。 但是从题面来看,他说给出中序遍历再让你求出加分最大的情况下的先序遍历,还是可以从 二叉树的重构 中汲取些灵感的。 1.二叉树的重构 先不管什么情况下加分最大,假如现在就给你二叉树的中序遍历,让你输出它的先序遍历所有可能情况的数量(其实就是问你一
阅读全文
1

浙公网安备 33010602011771号