![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
箜瑟_qi
这个作者很懒,什么都没留下…
展开
-
最长相同不重叠子串
序: 关于最长相同不重叠子串,本文提供的是一个DP做法。 算法时间复杂度O(n^2),空间复杂度O(n)(滚动数组)。举个例子: string x = “**abcabc**abcabcabc” 最长相同不重叠子串长度为6。由于要求不重叠,所以边界除首尾外需要增加一条。 即字串长度小于|j-i|(j,i分别为一前一后两子串的尾下标)。状态转移方程: -> if(a[i] == a[j])原创 2017-04-29 22:34:33 · 993 阅读 · 0 评论 -
最长公共子序列(LCS)
问题: 给两串序列,求其中最长的公共自序列的长度。 如: A:1232193 B:482914132 最长公共子序列:232/213/293…总之长度为3。如何计算? 我们发现这个问题是一个明显的动态规划。 通过求子序列的最长公共子序列来得到更长的序列的最长公共子序列。那么如何构造转移方程? 用dp[i][j]表示第一序列到第i个,第二序列到第j个的最长子序列长度。那么转移方程式如下原创 2017-04-25 17:59:24 · 266 阅读 · 0 评论 -
O(mn)实现LCIS
序: LCIS即求两序列的最长公共不下降子序列。思路于LCS基本一致。用dp[i][j]记录当前最大值。代码实现:/*About: LCIS O(mn)Auther: kongse_qiDate:2017/04/26*/#include <bits/stdc++.h>#define maxn 505using namespace std;int n, m, a[maxn], b[ma原创 2017-04-26 09:37:53 · 365 阅读 · 0 评论 -
luogu 1521-求逆序对
题意: 逆序对指在一个序列中ai>aj && i < j,也就是一前一后两个数,当大的在前面的时候即算一对。题目求在一个由1…n组成的序列中逆序对为k的序列的个数。 出题人很良心,不需要写高精度,答案对10000取模即可。思路: 这道题的前面其实还有一道很类似的题,也是求逆序对。不同的是那道题给定了序列求逆序对的个数,而这道题则相反。那道题的方法即merge sort。尽管两题很类似,但是方法原创 2017-04-27 12:34:02 · 507 阅读 · 0 评论 -
USACO 2.3 Cow Pedigrees 题解
Cow PedigreesFROM: Silviu Ganceanu – 2003DESCRIPTION: Farmer John is considering purchasing a new herd of cows. In this new herd, each mother cow gives birth to two children. The relationships among原创 2017-07-11 08:57:38 · 476 阅读 · 0 评论