动态规划
文章平均质量分 88
动态规划的转移部分确实很重要,但这容易让人忘了状态的初值同等重要
.SAI.
十年感悟 两年参悟
展开
-
P1434 滑雪(记忆化搜索 / 线性DP)
题目描述:题目传送门解题思路:此题可以考虑使用记忆化搜索和动态规划来做。记忆化搜索:原创 2021-12-11 16:41:59 · 529 阅读 · 1 评论 -
硬币方案 (背包DP)
题目描述:给定 NNN 种硬币,其中第 iii 种硬币的面值为 aia_iai,共有 bib_ibi 个。从中选出若干个硬币,把面值相加,若结果为 sss,则称“面值 sss 能被拼成”。求 111 到 MMM 之间能被拼成的面值有多少个。输入格式:输入包含多组测试数据。每组测试数据第一行包含两个整数 nnn 和 MMM。第二行包含2N个整数,分别表示 a1⋯ana_1\cdots a_na1⋯an 和 b1⋯bnb_1\cdots b_nb1⋯bn。当输入 N=0,M=0N=0,M原创 2021-12-08 20:15:08 · 353 阅读 · 0 评论 -
SSL 1813 回文词 P1435 回文字串 / [蓝桥杯 2016 省] 密码脱落
题目描述:题目传送门解题思路:这里我们可以考虑回文串的两个性质:回文串正序和倒叙是相同的。回文串以中选取分割点,左部分正序与右部分倒序是相同的如:abbccbba左部分正序:abbc右部分正序:cbba右部分倒叙:abbc因此我们可以从中作文章,延伸出两种解法。性质一解法:可以发现,若要使某个串成为回文串,那么显然要使这个串的倒序与这个串的正序相同。那么问题就变成了:两个串长度相等,需要插入多少个字母,才能使得这个串的正序与倒序相同。我们发现,若要使正序与倒序相同,显然两个原创 2021-12-08 17:21:15 · 660 阅读 · 0 评论 -
P4170 木板涂色(区间DP)
题目描述:题目传送门解题思路:此题可以考虑使用区间 dpdpdp 求解。aia_iai 表示为目标状态中第 iii 个位置的颜色。设 fi,jf_{i,j}fi,j 表示在一个 (i,j)(i,j)(i,j) 的区间内,使这个区间达到目标颜色需要的最少涂色次数。可以考虑分类讨论两种情况:若 ai=aja_i=a_jai=aj ,也就是说为 iii 上色时可以同时为 jjj 上色,因此 jjj 可以被省略,也就是说这个状态等同于 fi,j−1f_{i,j-1}fi,j−1;也可以原创 2021-12-07 20:01:00 · 203 阅读 · 0 评论 -
P1776 宝物筛选 (多重背包二进制拆分)
题目描述:题目传送门解题思路:根据题意知此题为多重背包裸题,即每个物品至多可以选 mmm 次的背包题目。世上背包千千万,无一不是 010101 背包的变体,多重背包亦是如此。**若第 iii 个物品的数目为 mim_imi ,我们可以将一种物品视作 mim_imi 个物品,第 jjj 个物品的重量以及价值都是原物品的 jjj 倍。**在此基础上我们可以直接进行 010101 背包。for (int i=1;i<=n;i++) //枚举物品种数 for (int j=V;j>原创 2021-12-05 14:25:33 · 312 阅读 · 0 评论 -
SSL 1653 数字游戏
题目描述:输入格式:输入文件的第一行是一个整数n(1<=n<=2000)n(1<=n<=2000)n(1<=n<=2000),表示数字个数;第二行一个整数m(1<=m<=n)m(1<=m<=n)m(1<=m<=n),表示回合数,接下来一行有n个不超过100001000010000的正整数,a1,a2,a3,⋯,ana1,a2,a3,\cdots,ana1,a2,a3,⋯,an表示原始序列,最后一行有n个不超过500500500的正原创 2021-12-04 16:36:28 · 4531 阅读 · 0 评论 -
P2439 阶梯教室设备利用 P1868 饥饿的奶牛 SSL 1212 大厅安排
.原创 2021-12-04 10:04:51 · 464 阅读 · 0 评论 -
P1352 SSL 1607 没有上司的晚会(链式前向星)
题目描述:题目传送门解题思路:原创 2021-12-03 21:56:12 · 265 阅读 · 0 评论 -
SSL 1633 农田个数 (数数版恶心DP)
题目描述:你的老家在河北农村。过年时,你回老家去拜年。你家有一片N∗MN*MN∗M农田,将其看成一个N∗MN*MN∗M的方格矩阵,有些方格是一片水域。你的农村伯伯听说你是学计算机的,给你出了一道题: 他问你:这片农田总共包含了多少个不存在水域的正方形农田。两个正方形农田不同必须至少包含下面的两个条件中的一条:边长不相等左上角的方格不是同一方格输入格式:输入数据第一行为两个由空格分开的正整数N、MN、MN、M(1<=mmm 第2行到第N+1N+1N+1行每行有MMM个数字(000或111),原创 2021-12-03 19:38:30 · 302 阅读 · 0 评论 -
SSL 1638 拔河比赛
题目描述:一个学校举行拔河比赛,所有人被分成了两组,每个人必须且只能够在其中一组,要求两个组的人数相差不能超过1,且两个组内所有人的体重加起来进可能地接近。样例输入:310090200样例输出:190 200解题思路:由于单个人最大重量比超过450,是一个极小的值,因此可以考虑将解(即重量)本身作为状态中的一个参量,将问题转换为判定性问题,通过判定解是否存在来找到最优解。设 fi,j,kf_{i,j,k}fi,j,k 表示从 iii 个人中选 jjj 个人,组成总重量为 kkk 的原创 2021-12-02 16:58:16 · 415 阅读 · 0 评论 -
P1282 SSL 1632 多诺米骨牌
题目描述:题目传送门解题思路:本题使用动态规划来求解。设 fi,jf_{i,j}fi,j 表示前 iii 个骨牌构成差值为 jjj 时要旋转骨牌的次数。若 aia_{i}ai 为第 iii 张骨牌上面的点数,bib_ibi 为第 iii 张骨牌下面的点数,则单独考虑第 iii 张骨牌的差值为 ai−bia_{i}-b_iai−bi。考虑骨牌的旋转,下面的值变成上面的了,上面的值变成下面的,那么差值就变成了 bi−aib_i-a_ibi−ai。由此,易得动态转移方程:fi,j=m原创 2021-11-27 14:55:01 · 109 阅读 · 0 评论 -
SSL 1589 P1006 传纸条
题目描述:题目传送门解题思路:诸如此类无后效性找路的问题,我们可以考虑DP。理解题目,求出从 (1,1)(1,1)(1,1) 到 (n,m)(n,m)(n,m),走两次,走过的数会变为0,求一个最大值。很容易想到是先从 (1,1)(1,1)(1,1) 走一次DP到 (n,m)(n,m)(n,m) 求最长路径,然后修改走过的点变为0,然后再DP一遍,把前后两趟DP的结果加起来,求出答案。这是一种很自然的想法,这种解法确实能过样例,但举出反例也不难如图:图二为走第一次 DP 时的走法。但我们发原创 2021-11-27 11:00:58 · 1167 阅读 · 0 评论 -
SSL 1664 取数字问题
题目描述:给定M*N的矩阵,其中的每个元素都是-10到10之间的整数。你的任务是从左上角(1,1)走到右下角(M,N),每一步只能向右或向下,并且不能走出矩阵的范围。你所经过的方格里面的数字都必须被选取,请找出一条最合适的道路,使得在路上被选取的数字之和是尽可能小的正整数。输入格式:第一行两个整数M,N,(2<=M,N<=10),分别表示矩阵的行和列的数目。接下来的M行,每行包括N个整数,就是矩阵中的每一行的N个元素。输出格式仅一行一个整数,表示所选道路上数字之和所能达到的最小的正整原创 2021-11-27 09:55:04 · 108 阅读 · 0 评论 -
P1757 分组背包
题目描述:题目传送门解题思路:依题意得,同组内的元素会互相冲突,也就是说同一组只能选一个,也就是说在组内做01背包。我们先来看看伪代码:for 所有的组k for v=V..0 for 所有的i属于组k f[v]=max{f[v],f[v-w[i]]+c[i]}第一重循环比较好理解,就是一组一组下去的做01背包。但是for v=V..0必须放在for 所有的i属于组k的外面,这是为了保证在当前容量中,每一个同组的物品只会选到一个。如:当枚举到 fvf_原创 2021-11-27 07:47:51 · 146 阅读 · 0 评论 -
SSL 1203 书的复制
题目描述:现在要把M本书由顺序的书给K 个人复制(抄写),每个人抄写的速度都一样,一本书不允许分给两个或以上的 人抄写,分给每个人的书必须连续,比如不能把第一、第三、第四本书给同一个人抄写。设计一种方案,使抄写时间最短,抄写时间为抄写时间最多的人所用的时间。样例输入:9 31 2 3 4 5 6 7 8 9样例输出:17解题思路:设 fi,jf_{i,j}fi,j 表示为前 iii 本书交给 jjj 个人复制所用的最短抄写时间需要一个 kkk 作为分段点,如果从第 kkk 本书开始交原创 2021-11-26 20:47:30 · 1577 阅读 · 1 评论 -
最长公共子序列 SSL1463 (动态规划)
题目描述:解题思路:这题可以用暴搜枚举每一种可能,找出最优解,然后愉快超时。分析题目,长度为 nnn 的两个序列的最长公共子序列长度必然源于长度 n−1n-1n−1 的两个序列的最长公共子序列长度,因此可以判断该问题具有最优子结构性,考虑动态规划。这道题需要用到一种非常经典的线性DP,公共子序列DP。俗话说得好,几乎每一种模板类型的DP的推出都离不开建模(就是画图!),而分析DP的办法最好就是打表,因此,在我们完全不知道DP方程的情况下,我们可以出一个小一点的数据,尝试打个表,自己推出DP设原创 2021-08-27 17:50:04 · 172 阅读 · 2 评论 -
最大连续数列之和 SSL1461 (动态规划)
题目描述:求一个数列中的连续若干个数和的最大值,其中数列的长度最长为10000,数的范围为-100~100之间。输入:1078 -98 72 36 -54 77 44 -100 78 23输出:176解题思路:众所周知,一个数列本身就是它的子序列,只要我们把每个数加起来,不就是最大的吗?还用什么DP啊!前缀和表示 你瞧不起我吗?但是数的范围为-100~100之间如果有了负数,那么就不一定是全部加起来最大了。我们举一个简单的栗子:−1 −2 −3 −原创 2021-08-24 12:00:46 · 137 阅读 · 6 评论 -
最大子矩阵SSL1209 (动态规划)
题目大意:给出一个N(2≤N≤100)N(2\leq N \leq100 )N(2≤N≤100),并给出一个N*N的矩阵,矩阵中的数为[-127,127]之间。求出矩阵中一块子矩阵的最大和。比如:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2和最大的子矩阵应该是这个:9 2-4 1-1 8它的和是15。解题思路:看到这一题,我们可以考虑用枚举来求最大子矩阵。但是,如果每次尝试都进行一次求和,时间复杂度过不去,因此我们需要哪个在神坛上的工具,二维前缀和。前原创 2021-08-23 19:05:38 · 367 阅读 · 8 评论 -
SSL2863 石子合并 (动态规划 区间DP)
题目描述:有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成一堆的总花费最小例如:48 2 3 6方案一代价为:10+9+19=3810+9+19=3810+9+19=38方案二代价为:5+11+19=355+11+19=355+11+19=35所以最小代价为 353535。解题思路:动态规划常常采取从部分整体最优解的拆分来得到最优解法的递归式,我们可以想到,此处是由2堆石子合并,所以最终最优原创 2021-08-21 09:53:05 · 187 阅读 · 20 评论 -
P1439 【模板】最长公共子序列 (最长不下降序列 (单调队列优化))
题目大意:洛谷最长公共子序列(其实是最长不下降子序列的模板题)解题思路:只要有一点DP基础,就知道这题肯定是用最长公共子序列的DP来做。但是我们再看看这数据范围 对于 100% 的数据 n<=105n<=10^5n<=105。由于基础的公共序列DP是用二维数组做的,因此不难发现,如果没有神学优化,一定会愉快超时(时间是 O(n2n^2n2))。那么怎么办?任何所谓困难的题目,都离不开对题意的转换我们可以通过题目发现,两个数列都是属于同一个全排列里的——说明什么?说明在这原创 2021-08-21 08:23:05 · 788 阅读 · 9 评论 -
Cow Cash G (动态规划 完全背包)
-## 题目大意:洛谷题目传送门解题思路:这似乎是一道很好的爆搜题,但是我们还是得跟着那句老话走能用动态规划就别用别的动态规划,AC可以变得很神奇,但是思考状态转移的时候真的可以让人脑袋爆掉!!那么切回正题,这题怎么做?看到邮票可以无限使用,那么不难发现这是一道类似于完全背包的动规了首先设定状态,我们将 iii的方案数表示为 dpidp_idpi。接下来,我们考虑阶段——设我们为了组合出iii,我们选择一张面值为 aia_iai 的邮票来尝试组合,那么他的方案数变成了 dpi−ai原创 2021-08-19 18:47:12 · 161 阅读 · 9 评论 -
SSL 1276 石子合并 (动态规划 01背包)
动归永远的基础——01背包问题动归永远的基础——01背包问题动归永远的基础——01背包问题题目大意:你有N个石头,质量分别为W1,W2,W3…WN. (W<=100000) 现在需要你将石头分为两堆,使两堆质量的差为最小。解题思路:第一眼看到这道题,你会想起爆搜,它也确实能过,但是我们不那么做,为什么?因为搜索是粗暴的咆哮,而DP是自由与骄傲的吟唱但是,这题怎么用DP做呢?状态是什么?阶段是什么?我们依然一无所知。其实我们可以这么想,让两堆石头质量差最小,其实就是一个选与不选的过程,原创 2021-08-19 10:59:51 · 202 阅读 · 13 评论 -
[NOIP1996 提高组] 挖地雷 (动态规划)
燃烧的大脑——动态规划 燃烧的大脑——动态规划 燃烧的大脑——动态规划题目大意:洛谷例题题目传送门!!!解题思路:原创 2021-08-18 21:49:41 · 853 阅读 · 6 评论