
算法的变形及衍生
文章平均质量分 67
Wall_F
这个作者很懒,什么都没留下…
展开
-
Floyd算法变形及应用
Floyd的变形大概分为三种情况,通过“或”,max,min运算的变形。这篇文章只粗略介绍后两种情况。 如图: 最大的最小边权值 从1到7的最大的最小边权值是25,即1->2->4->7。 如 POJ 2663,关于这道题目,我们可以抽象一下,即在保证货车不超过道路给定的最小限重量的情况下,使得货车装载的货物的重量最大。 即该边是一个顶点到另一个顶点所有路径中的最原创 2012-11-13 12:06:31 · 2386 阅读 · 0 评论 -
最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法实现及其优化
为了更好的介绍O(nlogn)算法,我们回顾一下一般的O(n^2)的算法。 令A[i]表示输入第i个元素,d[i]表示从A[1]到A[i]中以A[i]结尾的最长子序列长度。对于任意的0 DP状态转移方程:d[i] = max{1, d[j] + 1} (j = 1, 2, 3, ..., i-1 且 A[j] ① 对于最长不下降子序列,怎样实现O(nlogn)算法呢?我们知道O(n原创 2012-12-14 17:10:11 · 22429 阅读 · 5 评论 -
Floyd判圈算法(龟兔赛跑算法)
今天通过接触到了Floyd判圈算法,觉得这个算法很神奇,在网上找了N久的算法资料,终于让我找到了。 传送门:http://blog.youkuaiyun.com/thestoryofsnow/article/details/6822576 有时间再去学习学习。 示例代码: void solve() { read_case(); int ans = k; int count = 0;原创 2013-04-09 22:02:22 · 7733 阅读 · 0 评论 -
最长公共上升子序列的DP解法及其优化
最近学习了关于最长公共上升子序列的DP做法,去网上查了一些资料。由于一方面感觉太凌乱,另一方面感觉ICPC中懂得“为什么”懂得“怎么做”更加重要,于是自己就写一些总结咯。 定义状态 F[i][j]表示以a串的前i个整数与b串的前j个整数且以b[j]为结尾构成的LCIS的长度。 状态转移方程: ①F[i][j] = F[i-1][j] (a[i] != b[j]) ②F[i][j] = m原创 2012-12-10 20:48:03 · 11627 阅读 · 6 评论