一、 求逆元-费马小定理 二、 树状数组 三、 最大流-Dinic 四、 二分图-匈牙利算法 五、 扩展欧几里得 六、 假的字符串Hash,其实是map 七、 克鲁斯卡尔 八、 LCA-倍增 九、 构造最长公共子序列LCS 十、 归并排序求逆序对 十一、 线段树 十二、 SPFA 十三、 树链剖分 ...
分类:
其他好文 时间:
2018-01-18 19:34:49
阅读次数:
185
一、 求逆元-费马小定理 二、 树状数组 三、 最大流-Dinic 四、 二分图-匈牙利算法 五、 扩展欧几里得 六、 假的字符串Hash,其实是map 七、 克鲁斯卡尔 八、 LCA-倍增 九、 构造最长公共子序列LCS 十、 归并排序求逆序对 十一、 线段树 十二、 SPFA 十三、 树链剖分 ...
分类:
其他好文 时间:
2018-01-14 00:58:13
阅读次数:
151
题目链接:http://codeforces.com/problemset/problem/463/D 题意: 给你k个1到n的排列,问你它们的LCS(最长公共子序列)是多长。 题解: 因为都是1到n的排列,即每个串中,1到n每个数字恰好出现一次。 将相同的数字之间相连,可以得到下面的样子(n = ...
分类:
其他好文 时间:
2018-01-08 21:05:07
阅读次数:
172
一般对于两个字符串,长度分别为n和m,其时间复杂度为O(nm)。 但是针对小字符集的情况,可以把复杂度降低到O(n^2+km),其中n为两个字符串较短的长度。这种方法对于两个字符串长度相差很大的情况比O(nm)要优化很多。 就假设所有的字符都是小写字母,这样就符合小字符集的前提了。设较短的字符串为S ...
分类:
编程语言 时间:
2017-12-31 12:50:40
阅读次数:
166
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列。 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列。 输出格式: 一个数,即最长公共子序列的长度 输入输出样例 输入样例#1: 5 3 2 1 4 5 1 2 3 4 5 输出样例#1: ...
分类:
其他好文 时间:
2017-12-17 00:07:27
阅读次数:
198
Bamboo and the Ancient Spell 分析 可能英文读题难度比较大,但是只要看到全大写的 "THE LONGEST COMMON SUBSEQUENCE !"应该就清楚这是考什么的了。 最长公共子序列:可以不连续。序列长度很大时,暴力方法非常费时,这也是一道比较经典的《算法导论》 ...
分类:
编程语言 时间:
2017-12-04 19:11:37
阅读次数:
180
940 AlvinZH的最“长”公共子序列 思路 DP,难题。 $dp[i][j]$ :记录A的前i个字符与B的前j个字符变成相同需要的最小操作数。 初始化:dp[i][0] = i, dp[0][i] = i。分别代表i次删除or添加操作。 三种操作得到dp[i][j],取其中最小值: 替换:可能 ...
分类:
编程语言 时间:
2017-12-04 19:05:35
阅读次数:
173
最长公共子序列 一: 作用 最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法,作为码农,此算法是我们的必备基本功。 二:概念 举个例子,cnblogs这个字符串中子序列有多少个呢?很显然有27个,比如其中的cb,cgs等等都是其子序列,我们可以看出 子序列不见得一定是连续的,连续的 ...
分类:
其他好文 时间:
2017-12-04 13:24:19
阅读次数:
200
最长公共子序列Lcs 51--Nod 狂晒C++疑问,专家帮你解答,还有更美的事么?! 再发对于EOF的理解,Windows下面ctrl+z的WM_CHAR值为26! Scratch第一课:让小猫走起来 66e僭柑奈http://p.baidu.com/itopic/main/center?uid= ...
分类:
编程语言 时间:
2017-12-03 11:17:58
阅读次数:
268
可以发现只有当两个序列中都没有重复元素时(1~n的排列)此种优化才是高效的,不然可能很不稳定。 求a[] 与b[]中的LCS 通过记录lis[i]表示a[i]在b[]中的位置,将LCS问题转化为最长上升子序列问题,转化方法如下: for(int i=1;i include include inclu ...
分类:
其他好文 时间:
2017-11-20 23:09:11
阅读次数:
199