![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP问题
星辰予曦
Java开发与算法领域的爱好者
展开
-
AcWing 1010.拦截导弹(线性DP)
动态规划问题中的线性DP问题原创 2022-06-17 00:25:48 · 195 阅读 · 0 评论 -
901. 滑雪
给定一个RR行CC列的矩阵,表示一个矩形网格滑雪场。矩阵中第ii行第jj列的点表示滑雪场的第ii行第jj列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩...原创 2022-05-10 22:26:12 · 55 阅读 · 0 评论 -
285. 没有上司的舞会
Ural 大学有NN名职员,编号为1∼N1∼N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数HiHi给出,其中1≤i≤N1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数NN。接下来NN行,第ii行表示ii号职员的快乐指数HiHi。接下来N−1N−1...原创 2022-05-10 22:26:32 · 60 阅读 · 0 评论 -
91. 最短Hamilton路径
给定一张nn个点的带权无向图,点从0∼n−10∼n−1标号,求起点00到终点n−1n−1的最短 Hamilton 路径。Hamilton 路径的定义是从00到n−1n−1不重不漏地经过每个点恰好一次。输入格式第一行输入整数nn。接下来nn行每行nn个整数,其中第ii行第jj个整数表示点ii到jj的距离(记为a[i,j]a[i,j])。对于任意的x,y,zx,y,z,数据保证a[x,x]=0,a[x,y]=a[y,x]a[x,x]=0...原创 2022-05-10 22:27:01 · 134 阅读 · 0 评论 -
291. 蒙德里安的梦想
求把N×MN×M的棋盘分割成若干个1×21×2的长方形,有多少种方案。例如当N=2,M=4N=2,M=4时,共有55种方案。当N=2,M=3N=2,M=3时,共有33种方案。如下图所示:输入格式输入包含多组测试用例。每组测试用例占一行,包含两个整数NN和MM。当输入用例N=0,M=0N=0,M=0时,表示输入终止,且该用例无需处理。输出格式每个测试用例输出一个结果,每个结果占一行。数据范围1≤N,M≤111≤N,M≤11输入样...原创 2022-05-10 22:27:30 · 47 阅读 · 0 评论 -
338. 计数类问题(计数DP)
给定两个整数aa和bb,求aa和bb之间的所有数字中0∼90∼9的出现次数。例如,a=1024,b=1032a=1024,b=1032,则aa和bb之间共有99个数如下:1024 1025 1026 1027 1028 1029 1030 1031 1032其中0出现1010次,1出现1010次,2出现77次,3出现33次等等…输入格式输入包含多组测试数据。每组测试数据占一行,包含两个整数aa和bb。当读入一行为0 ...原创 2022-05-10 22:27:48 · 88 阅读 · 0 评论 -
900. 整数划分
一个正整数nn可以表示成若干个正整数之和,形如:n=n1+n2+…+nkn=n1+n2+…+nk,其中n1≥n2≥…≥nk,k≥1n1≥n2≥…≥nk,k≥1。我们将这样的一种表示称为正整数nn的一种划分。现在给定一个正整数nn,请你求出nn共有多少种不同的划分方法。输入格式共一行,包含一个整数nn。输出格式共一行,包含一个整数,表示总划分数量。由于答案可能很大,输出结果请对109+7109+7取模。数据范围1≤n≤10001≤n≤1000输入样...原创 2022-05-10 22:27:57 · 66 阅读 · 0 评论 -
282. 石子合并
设有NN堆石子排成一排,其编号为1,2,3,…,N1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这NN堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有44堆石子分别为1 3 5 2, 我们可以先合并1、21、2堆,代价为44,得到4 5 2, 又合并1,21,2堆,代价为99,得到9 2,再合并得到1111,总...原创 2022-05-10 22:28:23 · 60 阅读 · 0 评论 -
899. 编辑距离
给定nn个长度不超过1010的字符串以及mm次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的nn个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。输入格式第一行包含两个整数nn和mm。接下来nn行,每行包含一个字符串,表示给定的字符串。再接下来mm行,每行包含一个字符串和一个整数,表示一次询问。字符串中只包含小写字母,且长度均不超过101...原创 2022-05-10 22:28:33 · 62 阅读 · 0 评论 -
902. 最短编辑距离
给定两个字符串AA和BB,现在要将AA经过若干操作变为BB,可进行的操作有:删除–将字符串AA中的某个字符删除。 插入–在字符串AA的某个位置插入某个字符。 替换–将字符串AA中的某个字符替换为另一个字符。现在请你求出,将AA变为BB至少需要进行多少次操作。输入格式第一行包含整数nn,表示字符串AA的长度。第二行包含一个长度为nn的字符串AA。第三行包含整数mm,表示字符串BB的长度。第四行包含一个长度为mm的字符串BB。...原创 2022-05-09 22:35:38 · 67 阅读 · 0 评论 -
897. 最长公共子序列
给定两个长度分别为NN和MM的字符串AA和BB,求既是AA的子序列又是BB的子序列的字符串长度最长是多少。输入格式第一行包含两个整数NN和MM。第二行包含一个长度为NN的字符串,表示字符串AA。第三行包含一个长度为MM的字符串,表示字符串BB。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤10001≤N,M≤1000输入样例:4 5acbdabedc输出样例:3#in...原创 2022-05-09 22:34:24 · 85 阅读 · 0 评论 -
896. 最长上升子序列 II
给定一个长度为NN的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数NN。第二行包含NN个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000001≤N≤100000,−109≤数列中的数≤109−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4#include<iostream>using namespace std;const i...原创 2022-05-09 22:33:42 · 51 阅读 · 0 评论 -
895. 最长上升子序列
给定一个长度为NN的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数NN。第二行包含NN个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4#include<iostream>using namespace std;const int N...原创 2022-05-09 22:32:23 · 107 阅读 · 0 评论 -
898. 数字三角形
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 5输入格式第一行包含整数nn,表示数字三角形的层数。接下来nn行,每行包含若干整数,其中第ii行表示数字三角形第ii层包含的整数。输出格式输出一个整数,表示最大的路径数字和...原创 2022-05-09 22:30:48 · 84 阅读 · 0 评论 -
9. 分组背包问题
有NN组物品和一个容量是VV的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是vijvij,价值是wijwij,其中ii是组号,jj是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数N,VN,V,用空格隔开,分别表示物品组数和背包容量。接下来有NN组数据:每组数据第一行有一个整数SiSi,表示第ii个物品组的物品数量; 每组数据接下来有SiSi行,每行有...原创 2022-05-09 22:29:38 · 94 阅读 · 0 评论 -
5. 多重背包问题 II
有NN种物品和一个容量是VV的背包。第ii种物品最多有sisi件,每件体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行三个整数vi,wi,sivi,wi,si,用空格隔开,分别表示第ii种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N≤100...原创 2022-05-09 22:28:59 · 60 阅读 · 0 评论 -
4. 多重背包问题 I
有NN种物品和一个容量是VV的背包。第ii种物品最多有sisi件,每件体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行三个整数vi,wi,sivi,wi,si,用空格隔开,分别表示第ii种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1...原创 2022-05-09 22:26:48 · 41 阅读 · 0 评论 -
3. 完全背包问题
有NN种物品和一个容量是VV的背包,每种物品都有无限件可用。第ii种物品的体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行两个整数vi,wivi,wi,用空格隔开,分别表示第ii种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<...原创 2022-05-09 22:25:52 · 50 阅读 · 0 评论 -
2. 01背包问题
动态规划问题原创 2022-05-09 22:24:52 · 43 阅读 · 0 评论