![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
DP问题
SumFunction
这个作者很懒,什么都没留下…
展开
-
线性DP 最短编辑距离
给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有:删除–将字符串A中的某个字符删除。插入–在字符串A的某个位置插入某个字符。替换–将字符串A中的某个字符替换为另一个字符。现在请你求出,将A变为B至少需要进行多少次操作。输入格式第一行包含整数n,表示字符串A的长度。第二行包含一个长度为n的字符串A。第三行包含整数m,表示字符串B的长度。第四行包含一个长度为m的字符串B。字符串中均只包含大写字母。输出格式输出一个整数,表示最少操作次数。数据范围1≤n,m≤1000原创 2021-03-12 19:32:14 · 116 阅读 · 0 评论 -
线性DP 最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤1000输入样例:4 5acbdabedc输出样例:3DP分析线性DP问题首先考虑集合 f(i,j)表示A串区间(1,i) B串区间(1,j)的所有最长公共子序列集合该.原创 2021-03-10 00:41:55 · 179 阅读 · 0 评论 -
线性DP 最长上升子序列I
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤1000,−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4说明:对于样例的最长上升子序列为1 2 5 6DP思路这是一道线性DP问题我们定义集合f(i)表示以第i个数结尾的数的所有上升子序列其f(i)属性可以表示为以第i个数结尾的所有上升子序列的最大长度则状态转原创 2021-03-09 23:50:12 · 111 阅读 · 0 评论 -
环形区间DP 环形石子合并
题目描述在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.输入输出格式输入格式:数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.输出格式:输出共2行,第1行为最小得分,第2行为最大得分.输入输出样例输入样例#1:44 5 9 4输出样例#1:4354环形区间DP思路相比原创 2021-03-07 16:43:04 · 166 阅读 · 0 评论 -
区间DP 石子合并
设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,则代价为7,得到4 7,原创 2021-03-07 15:52:28 · 97 阅读 · 0 评论