- 博客(2)
- 收藏
- 关注
原创 最长公共子序列nlogn算法
求两个序列的最大公共子序列(LCS),普遍的动态规划算法时间复杂度为O(n^2),在两个序列的长度很长的时候运行时间过长。可以转化为最长上升子序列(LIS)来求,时间复杂度可以优化到nlogn。1.首先说一下转化为LIS的方法: 找到s1序列中每个元素在s2序列中的位置,并用这些在s2中的位置替换s1中对应的元素,注意s1中的元素在s2中当有多个位置(a1,a2,a3……)时,要降序排列(a1>a
2015-04-14 00:04:50
4846
3
原创 求最大连续和
以后把看到的算法还是都写下来吧Orz。一个长度为n的整数序列,A1,A2,……,An,求最大的连续和。最容易想到的是每次计算i–j的连续和,并维护最大值。不过时间复杂度为O(n^3)。 采取预先记录前i项和的方法可以优化到O(n): #include<cstdio>const int maxn = 100005;int a[maxn], s[maxn];int main(){ int
2015-04-12 00:28:34
452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人