上一页 1 ··· 4 5 6 7 8

2016年5月12日

最长上升公共子序列

摘要: 定义状态 F[i][j]表示以a串的前i个整数与b串的前j个整数且以b[j]为结尾构成的LCIS的长度。 状态转移方程: 现在我们来说为什么会是这样的状态转移方程呢? 对于①,因为F[i][j]是以b[j]为结尾的LCIS,如果F[i][j]>0那么就说明a[1]..a[i]中必然有一个整数a[k] 阅读全文

posted @ 2016-05-12 17:21 比特飞流 阅读(260) 评论(0) 推荐(0)

最长公共子序列(LCS)

摘要: 一: 作用 最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法,作为码农,此算法是我们的必备基本功。 二:概念 举个例子,cnblogs这个字符串中子序列有多少个呢?很显然有27个,比如其中的cb,cgs等等都是其子序列,我们可以看出 子序列不见得一定是连续的,连续的那是子串。 我想 阅读全文

posted @ 2016-05-12 16:07 比特飞流 阅读(202) 评论(0) 推荐(0)

2016年5月10日

最近公共祖先(LCA)

摘要: 1、 概述 LCA(Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n 阅读全文

posted @ 2016-05-10 09:06 比特飞流 阅读(356) 评论(0) 推荐(0)

2016年4月29日

最长不下降子序列的O(n^2)算法和O(nlogn)算法

摘要: 一、简单的O(n^2)的算法 很容易想到用动态规划做。设lis[]用于保存第1~i元素元素中最长不下降序列的长度,则lis[i]=max(lis[j])+1,且num[i]>num[j],i>j。然后在lis[]中找到最大的一个值,时间复杂度是O(n^2)。 代码实现: int Longest_In 阅读全文

posted @ 2016-04-29 16:42 比特飞流 阅读(292) 评论(0) 推荐(0)

子序列相关问题

摘要: ①最长上升(下降)子序列/最长不下降(上升)子序列、(O(nlog2n)算法)(导弹防御 usaco 4.3.1) ②最长先上升后下降子序列 (合唱队形) ③最长上升下降相间子序列(花匠) ④最大连续子序列和 O(n) ⑤子序列的和为固定值 O(n2) (usaco 平分子集) ⑥最大元素不相邻子序 阅读全文

posted @ 2016-04-29 16:29 比特飞流 阅读(236) 评论(0) 推荐(0)

2016年4月28日

近期计划

摘要: 背包(0/1背包,完全背包,多重背包,分组背包,简单依赖背包,复杂依赖背包转化为树形dp) LIS 最长单调递增子序列 LCS 最长公共子序列 区间dp 环形dp 树形dp 状态压缩dp 单调dp 求LCS(最长公共子序列)的长度的nlogn算法可以通过转换为求一个数列的LIS。与动归的n^2复杂度 阅读全文

posted @ 2016-04-28 16:19 比特飞流 阅读(117) 评论(0) 推荐(0)

2016年4月26日

(转)Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)

摘要: 基本概念: 1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。 2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。 3.点连通度:最小割点集合中的顶点数。 4.割边(桥):删掉它之后 阅读全文

posted @ 2016-04-26 19:22 比特飞流 阅读(178) 评论(0) 推荐(0)

依赖背包

摘要: 依赖背包转化为树形dp。 例如若 阅读全文

posted @ 2016-04-26 08:43 比特飞流 阅读(101) 评论(0) 推荐(0)

2016年4月14日

强连通分量

摘要: 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量。 Tarjan算法是基于对图深度优先搜索的算法,每 阅读全文

posted @ 2016-04-14 10:28 比特飞流 阅读(354) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8

导航