把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

合集-动态规划

摘要:SP15637 GNYR04H - Mr Youngs Picture Permutations 解析 [题目链接](https://www.luogu.com.cn/problem/SP15637) ## 分析题目性质 大意就是给 $k$ 排然后每个数列单调,每个横列单调,求满足这样排列的方案数。 我们发现:与其为每个位置分配某个学生不如考虑**将每个学生分给某个位置**。 ## 思路 根据以上,不妨设:$f_{a_1,a_2,a_3,a_4,a_5}$ 分别代表第 $i$ 排现在人数为 $a_i$ 的方案数。 那么应该满足以下条件: - $a_i < N_i$ - $i=1$ 或者 $a_{i-1} 阅读全文
posted @ 2024-11-07 22:16 high_skyy 阅读(181) 评论(0) 推荐(0)
摘要:# P10954 LCIS 题目解析 [题目链接](https://www.luogu.com.cn/problem/P10954) ## 思路 前置:[弱化版](https://www.luogu.com.cn/problem/CF10D) 没什么好说的,设 $f_{i,j}$ 表示 $a$ 的前 $i$ 个并且结尾为 $b_j$ 的最长上升公共子序列。 定义 $a_0=b_0=-\infty.$ 转移: - $a_i=b_j,f_{i,j}=\max_{k\in [0,j-1]\text{ 且 }b_k < a_i} f_{i-1,k}.$ - 否则,$f_{i,j}=f_{i-1,j}.$ 我们发现直接过掉了,但这样的时间复杂度是 $\mathcal{O}(n^3)$ 的。 考虑免去一些重复的取 $\max$ 值。 阅读全文
posted @ 2024-11-07 22:50 high_skyy 阅读(30) 评论(0) 推荐(0)
摘要:# P1779 魔鬼杀手 题解&&思路 [题目链接](https://www.luogu.com.cn/problem/P1779)。 ## 分析题目性质 我们发现假如有状态表示 $M$ 个方案选或不选,那么这个状态有唯一确定的结果,即**结果不会随着施法的顺序而改变。** 考虑 $dp.$ 我们从题目出发,发现每个方案有单个攻击或者集体攻击,想一想从这个方面考虑。 又由于每一个方案是可以选择无限次的,不难想到 `完全背包`。 阅读全文
posted @ 2024-10-31 22:18 high_skyy 阅读(44) 评论(0) 推荐(0)
摘要:P2893 [USACO08FEB] Making the Grade G 题目分析 [题目链接](https://www.luogu.com.cn/problem/P2893) ## 分析题目性质 不难解析出题目中的序列 $B$ 有“单调不下降”和“单调不上升”两种情况,不难想到分两种情况讨论答案即可。 有一个性质: > 在满足答案最小化的情况,一定存在一种方案使得 $B$ 中的数字一定在 $A$ 中。 不难证明其方案是不劣于不在 $A$ 中的数的。 而根据性质,$j$ 可以用离散化解决,也可以设为 $A_j$。 因此,总时间复杂度 $\mathcal{O}(n^2)$ 的。 **注意,因为要求单调,所以一定要对离散过的 $A$ 进行排序,否则就有可能不单调。** 不难完成对 $cost(j+1,i-1)$ 的计算,即只需要计算什么时候前面与 $A_j$ 相同,后面与 $A_i$ 相同,使答案最小。 扫一遍即可,总时间复杂度 $\mathcal{O}(n^3)$,无法通过本题。 阅读全文
posted @ 2024-11-10 20:01 high_skyy 阅读(85) 评论(0) 推荐(0)
摘要:观察题目,可以发现的是一个凸多边形一定满足: - 每一行的左端点列号先递减后递增。 - 每一行的右端点列号先递增后递减。 根据上述,我们需要关注以下的信息: - 当前的左端点。 - 当前的右端点。 - 这一行以左端点开始连续选多少个。 - 当前左端点列号需要满足的单调性。 - 当前右端点列号需要满足的单调性。 显然的,右端点、左端点和选的格子数知道两个就可确定第三个的值。 因此我们设:$f_{i,j,l,r,0/1,0/1}$ 表示前 $i$ 行已经处理完毕加上第 $i$ 行有 $j$ 个格子,第 $i$ 行选择第 $l$ 到 $r$ 的格子,且左端点、右端点列号满足现在该有的单调性的最大价值(其中 $0$ 表示递减,$1$ 表示递增)。 阅读全文
posted @ 2024-11-12 22:08 high_skyy 阅读(33) 评论(0) 推荐(0)
摘要:[四倍经验](https://www.luogu.com.cn/paste/6zox5x4a) 目前这道题是最基础的,四倍经验里面的 $T_2$ 与此一样,$T_3$ 有点卡空间,但是还好,方案用 `short` 或者 `char` 即可优化,$T_4$ 一样,有些卡常,问题不大。 ## 分析题目性质 没有什么十分有用的性质。 ## 思路 注意到:分配干活的只有 $3$ 个人。 看到这么小的数很容易想到三维或者四维 $dp$ 或者是 状态压缩 $dp$,很显然是前者。 设 $f_{i,a_1,a_2,a_3}$ 表示第 $i$ 个请求后,三个人的位置分别为 $a_1,a_2,a_3$ 的最小成本。 转移是简单的,不过多赘述。 阅读全文
posted @ 2024-11-14 19:03 high_skyy 阅读(45) 评论(0) 推荐(0)
摘要:# 整数划分 题目分析以及衍生出来的一系列做法 推荐看[背包计数问题的多项式优化](https://www.cnblogs.com/maple276/p/18342090)。 ## 题目概述 将 $n$ 分为若干个**不同**整数的和,问有多少种方案。 ## 分析题目性质 想一想,注意到是不同整数的和,也就是说我们分成的 $k$ 部满足: $$ k(k+1)\leq 2n $$ 约等一下,$k\leq \sqrt{2n}+1$,即 $k_{\max}=\sqrt{2n}+1.$ 因此可以考虑 $\mathcal{O}(nk)$ 算法。 阅读全文
posted @ 2024-11-18 12:47 high_skyy 阅读(78) 评论(2) 推荐(0)
摘要:# CF140E New Year Garland 题目分析 挺不错的动态规划题目。 ## 思路 一看到题目便可以知道每一层和层与层之间是要分开来算的(这种类似的动态规划还有很多)。 我们先看看层与层之间的。 ### 层与层 题目要求:**相邻的两层的小球颜色集合不相同**。 那么区分相邻两层小球颜色集合不同可以通过**数量不同来区分**,然后再进行讨论即可。 根据上述,显然地,设 $f_{i,j}$ 表示已经完成前 $i$ 层,到了第 $i$ 层小球颜色集合的数量为 $j$ 的总方案。 我们先抛开重不重复不谈,那么它的总方案肯定是从前面的那一层转移过来,即 $f_{i-1,k}$,其中 $k\in [1,l_{i-1}]$。 那么是不是就是 $$ f_{i,j}=\sum_{k=1}^{l_{i-1}}f_{i-1,k} $$ 呢?显然不是,这里的 $j$ 是数量,并不是选了什么,因此还要有 $C_m^j$ 来确定选 $j$ 种颜色球的方案(这是对于当前 $i$ 的)。 阅读全文
posted @ 2025-03-11 19:17 high_skyy 阅读(28) 评论(0) 推荐(0)
摘要:## 题目概述 给你一个排列 $p$,共有 $n$ 个元素,你可以选择两个数 $i,j$,然后将 $p_i$ 移动到位置 $j$,这个过程需要花费 $i+j$ 的代价,问你通过这些操作过后所能使 $p$ 变为降序的最小代价。 ## 思路 变成降序似乎不是我们所擅长的,我们先转化为变成升序,这个是容易的只需要令 $p_i=n-p_i+1$ 即可。 我们先考虑暴力的做法,总结出来一些性质: - 每个数显然只能移动一次,如果移动了两次还不如一步到位。 - 按照从大到小的顺序移动这些数比按照其他顺序移动更好。 因此我们可以得到 $\mathcal{O}(n2^n)$ 的暴力。 阅读全文
posted @ 2025-07-30 12:27 high_skyy 阅读(48) 评论(0) 推荐(0)
摘要:考虑区间 $dp$。 设 $f_{i,j}$ 表示处理 $[i,j]$ 最小的总惩罚值。 分类: - 产品 $i$ 第一个出栈,则有 $f_{i,j}=t_i\times sd_{i,j}+f_{i+1,j}$ - 产品 $i$ 第 $k$ 个出栈,则有 $f_{i,j}=f_{i+1,k}+f_{k + 1,j}+st_{i,k}\times(d_i+sd_{k+1,j})$。 第二种情况第 $k$ 个出栈,那肯定 $i+1$ 到 $k$ 都已经出完栈了,所以后这些贡献。 阅读全文
posted @ 2025-09-29 19:18 high_skyy 阅读(9) 评论(0) 推荐(0)
摘要:思路跟 [P5770 [JSOI2016] 无界单词](https://www.luogu.com.cn/problem/P5770) 类似,都是一位一位确定的。 我们考虑状态压缩 $dp$。 首先我们枚举第 $i$ 个位置,一遍一遍得出其所要坐的人。 阅读全文
posted @ 2025-09-29 22:33 high_skyy 阅读(11) 评论(0) 推荐(0)
摘要:## 题目分析 注意到 $a_i\in[1,3]$,故设 $f_{i,j,k}$ 表示现在碗里只有 $1$ 个的有 $i$ 碗,只有 $2$ 个的有 $j$ 碗,只有 $3$ 个的有 $k$ 碗。 我们发现从 $f_{x,y,z}$ 推到 $f_{0,0,0}$ 是复杂的。 不妨将整个过程反过来变成生产寿司从 $f_{0,0,0}$ 推到 $f_{x,y,z}$ 即可。 那么我们有转移: $$ f_{i,j,k}=\frac{n-i-j-k}{n}(f_{i,j,k}+1)+\frac{i}{n}(f_{i-1,j,k}+1)+\frac{j}{n}(f_{i+1,j-1,k}+1)+\frac{k}{n}(f_{i,j + 1,k-1}+1) $$ 化简有: $$ (i+j+k)f_{i,j,k}=\frac{i}{n}f_{i-1,j,k}+\frac{j}{n}f_{i+1,j-1,k}+\frac{k}{n}f_{i,j+1,k-1}+n $$ 阅读全文
posted @ 2025-10-05 16:43 high_skyy 阅读(11) 评论(0) 推荐(0)
摘要:一个类似于 `CSP2025-S` 中第三题的动态规划。 倒着做。 设 $f_i$ 表示以 $A_i$ 为开头的子序列不在 $A_{i\dots |A|}$ 出现的最短长度。 然后从后面挑一个转移即可。 但是我们发现这样子是 $\mathcal{O}(n^2)$ 的。 但是我们可供转移的字符集最多只有 $26$ 个。 于是优化状态:设 $f_i$ 表示以字符 $i$ 为开头的子序列不在当前 $A$ 的后缀当中的最短长度。 $$ f_i=1+\min_x f_{p_x} $$ 然后就做完了。 阅读全文
posted @ 2025-10-12 11:08 high_skyy 阅读(11) 评论(0) 推荐(0)
摘要:题目概述 有 \(n\) 个位置有 \(m\) 个水滴,你在 \(0\) 的位置,每过一个单位,有水滴的地方个数都少 \(1\)。 其中:\(1\leq n\leq 300,-10^9\leq x_i\leq 10^9\)。 分析 感觉很典。 首先先对 \(x\)(带上 \(0\))排序。 我们考虑 阅读全文
posted @ 2025-10-13 11:05 high_skyy 阅读(7) 评论(0) 推荐(0)
摘要:题目概述 定义一个 test 为一个长 \(n+1\) 的序列且第 \(1\) 项是 \(n\)。 定义一个 multitest 为满足如下条件的序列: 后 \(n−1\) 项可以划分为 \(m\) 个 test。 第 \(1\) 项为 \(m\)。 给定一个序列 \(a\),你需要对于 \(a\) 阅读全文
posted @ 2025-10-13 11:45 high_skyy 阅读(14) 评论(0) 推荐(0)
摘要:题目链接:P1912 [NOI2009] 诗人小G 题目概述 给你几个字符串,你可以按照给定的顺序任意拼接(你可以分组),但是拼接的时候中间要打空格,设这个当前的拼接长度为 \(sum\),那么代价为 \(|sum-L|^P\),求最小的代价并输出方案。 分析 Luogu题解告诉我们一个快速判断决策 阅读全文
posted @ 2025-10-15 22:18 high_skyy 阅读(17) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P3084。 有 \(n\) 个牛,拍了 \(m\) 张照片,拍了 \([a_i,b_i]\) 中的牛,现在牛群中有一些特殊的牛,而且每一张照片有且仅有一个特殊的牛。问最多有多少特殊的牛。 分析 一开始会想到跟区间 阅读全文
posted @ 2025-10-16 15:28 high_skyy 阅读(18) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P2605。 有 \(n\) 个村庄,你需要建立不超过 \(k\) 个基站,每一户人家都有参数 \(d_i,s_i,w_i,c_i\) 分别表示距离第一户人家的距离、在不超过 \(s_i\) 的地方有基站才能覆盖此 阅读全文
posted @ 2025-10-16 20:35 high_skyy 阅读(24) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P3643。 给你 \(n\) 个班级,每个班级要么不选数要么选的数在 \([a_i,b_i]\),且选的数比编号比他小的班级选的数都要大,问有多少种方案(对 \((10^9+7)\) 取模)。 分析 感觉挺经典的 阅读全文
posted @ 2025-10-17 22:14 high_skyy 阅读(22) 评论(0) 推荐(0)
摘要:题目概述 Snuke 决定玩 \(N\) 张卡片和一个双端队列(即 deque)。每张卡片上显示一个从 \(1\) 到 \(N\) 的整数,而 deque 最初是空的。 Snuke 将按照从 \(1\) 到 \(N\) 的顺序,一次将卡片插入 deque 的开头或末尾。然后,他将执行以下操作 \(N 阅读全文
posted @ 2025-10-30 21:39 high_skyy 阅读(13) 评论(0) 推荐(0)
摘要:题目概述 给一个含有 \(n\) 个点和 \(m\) 条边的无向连通图,求恰好有 \(d\) 个叶子的生成树的个数。 数据范围:\(1\leq d\leq n\leq 10,m\leq \frac{n(n-1)}{2}\)。 分析 注意到 \(n\leq 10\),我们可能会有 \(2^n\) 或者 阅读全文
posted @ 2025-11-07 11:40 high_skyy 阅读(9) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/CF840C。 给你 \(n\) 给数,将他们排列成一个序列并满足相邻两项 \(a_i,a_{i+1}\) 相乘不为平方数。问方案。 分析 我只说明一种解法,其他类的解法总结见:https://www.luogu. 阅读全文
posted @ 2025-11-09 19:20 high_skyy 阅读(14) 评论(0) 推荐(0)
摘要:题目概述 你需要确定 \(n\) 个数,每个数形如 \(\frac{1}{2^x}(x\geq 0)\),其中 \(x\) 是非负整数,求他们的和为 \(k\) 的方案。 数据范围:\(1\leq k\leq n\leq 3000\)。 分析 真的妙! 我们假设最后的结果为 \(\{\frac{1} 阅读全文
posted @ 2025-11-10 19:37 high_skyy 阅读(7) 评论(0) 推荐(0)
摘要:题目概述 给定一个整数数组 \(b_1, b_2, \ldots, b_n\)。 如果一个整数数组 \(a_1, a_2, \ldots, a_n\) 满足对于每个 \(i\)(\(1 \leq i \leq n\)),至少满足以下两个条件之一: \(b_i = a_i\),或者 \(b_i = \ 阅读全文
posted @ 2025-11-10 20:20 high_skyy 阅读(9) 评论(0) 推荐(0)
摘要:题目概述 给你一颗树并且每个点上面有点权,你可以进行一次操作:选择一个点将他自己和与他距离为 \(1\) 的点的点权全部异或 \(1\)。 求最少多少次操作使得每个点的点权都是 \(0\)。 分析 遇到这种题目,一般都是先考虑贪心或者基本算法。 我们考虑从下往上依次使其子树变成 \(0\),我们发现 阅读全文
posted @ 2025-11-14 12:31 high_skyy 阅读(15) 评论(0) 推荐(0)
摘要:题目概述 在这个编辑器中,可以执行如下几种操作来输入某个字符串,设 \(X\) 为屏幕上的字符串,\(Y\) 为剪切板中的字符串,初始均为空串: 操作 A:输入字符 \(c\),即将 \(X\) 更新为 \(X+c\)。 操作 B:选择所有字符并剪切,即将 \(Y\) 更新为 \(X\),并将 \( 阅读全文
posted @ 2025-11-18 21:56 high_skyy 阅读(17) 评论(0) 推荐(0)
摘要:题目概述 给定一个数列 $ A = (A_1, \ldots, A_N) $。你可以对 $ A $ 进行以下两种操作,顺序和次数不限: 交换操作:设操作前 $ A $ 的长度为 $ K $。选择满足 $ 1 \leq i \leq K - 1 $ 的整数 $ i $,交换 $ A $ 的第 $ i 阅读全文
posted @ 2025-11-20 22:29 high_skyy 阅读(20) 评论(0) 推荐(0)
摘要:题目概述 给定字符串 \(A\) 和字符串 \(B\),定一次操作为将 \(A\) 一个区间的字符全部换成同一个,问最小操作让 \(A\rightarrow B\)。 分析 一看完题目感觉似曾相识,好像有道题目类似吧。 就这道:P4170 [CQOI2007] 涂色。 这道一开始 \(A\) 是全部 阅读全文
posted @ 2025-11-21 15:52 high_skyy 阅读(10) 评论(0) 推荐(0)
摘要:题目概述 你需要将一个长度为 \(n\) 的序列 \(A\) 分成若干段,满足每段中数字之和 \(\leq m\),每段将这一段的最大值作为他的贡献,求他们贡献之和的最小值。 分析 蓝书好题!这是一道例题。 不难设 \(f_i\) 表示前 \(i\) 个数分成若干段所得到的最小答案。 显然转移有: 阅读全文
posted @ 2025-11-25 19:27 high_skyy 阅读(8) 评论(0) 推荐(0)
摘要:题目概述 给定 \(n,m\),求有多少个长度为 \(n\) 的序列 \(a\) 满足 每个元素在 \([1,m]\)。 存在一种删除方式,使得整个序列得以被删除。删除方式:选择一个长度不小于 \(2\) 的区间且这两端数字相同即可删除。 数据范围:\(1\leq n\leq 3000,1\leq 阅读全文
posted @ 2026-02-26 21:43 high_skyy 阅读(1) 评论(0) 推荐(0)
摘要:题目概述 给定 \(n\),连边方式 \(i\) 连向 \(j\) 满足 \(1\leq i<j\leq n\)。 求对于 \(k\in[0,n]\),恰好有 \(k\) 个点 \(x\) 满足 \(1\rightarrow x\rightarrow n\)。 数据范围:\(1\leq n\leq 阅读全文
posted @ 2026-02-27 22:24 high_skyy 阅读(1) 评论(0) 推荐(0)

浏览器标题切换
浏览器标题切换end