基础算法
code&poetry
深至缄默,如云漂泊。
展开
-
蚂蚱跳跃问题
蚂蚱跳跃问题题目大意: 一个蚂蚱最初位于坐标轴的原点,现在蚂蚱要跳跃到坐标轴的s点,跳跃规则是蚂蚱既可以往正方向跳跃,也可以往负方向跳跃,蚂蚱第一次跳跃1个单位,以后的跳跃步数在前一步的基础上加一。现在求蚂蚱跳跃到s点最少需要多少步数? 原题截图如下: 题意分析:首先看题目的数据最大约为10亿,意味着不可能采用搜索、暴力等一些耗时的解决办法,也不会让你在代码中开辟较大的数组,那么拿到这个问题如原创 2016-09-20 18:03:35 · 6025 阅读 · 3 评论 -
并查集及其应用
并查集及其应用什么是并查集如何构建并查集案例分析改进有怀HDOJ-1232 HDOJ-1829 HDOJ-1213 HDOJ-3635什么是并查集?并查集是在解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,并查集是一种树型的数据结构,用于处理一些不相交集合的合并问题如何构建并查集?并查集的主要操作有: 1-合并两个不相交集合 2-判断两个元素是否属于同一个集合原创 2017-03-01 18:41:45 · 1036 阅读 · 0 评论 -
初识红黑树(—)
一、前言 最近在看算法导论,关于红黑树看了许久,才有个大概的影子,关键的部分还是很多未能完全理解,这篇博客相当于学习笔记吧,后续有更好的理解或者感悟在补上,由此不得不佩服红黑树的发明者。二、红黑树性质 红黑树是很多平衡搜索树中的一种,可以保证在最坏的情况下基本的查询、插入、删除时间复杂度是O(logN),红黑树每个节点上增加一个标志位表示节点的颜色,红黑树保证没有一条从根原创 2017-03-27 10:42:43 · 812 阅读 · 0 评论 -
重温KMP
KMP算法的理解KMP算法的核心思想KMP算法的实现原理KMP算法的编程实现KMP的改进KMP算法的核心思想kmp算法的核心即是计算模式串的每一个位置之前的字符串的前缀和后缀公共部分的最大长度(不包括字符串本身,否则最大长度始终是字符串本身)KMP算法的编程实现void get_next(char *T, int *next) { int k = -1; int原创 2017-03-24 17:15:11 · 1198 阅读 · 0 评论 -
扩展KMP
扩展KMP什么是扩展KMP扩展KMP的原理扩展KMP的编程实现扩展KMP的用途参照 ++http://blog.csdn.net/dyx404514/article/details/41831947++1 什么是扩展KMP给出模板串S和T,长度分别为Slen和Tlen,要求在线性时间内,对于每个S[i](0<=i2 扩展KMP的原理记母串为S,模式串为T,next[i]表示模式串S的后缀原创 2017-03-24 17:16:57 · 1224 阅读 · 0 评论 -
最近公共祖先(LCA)问题-在线ST算法
LCA算法详解1. 概述LCA(Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大且查询很频繁时,该算法也许会存在问题。2. 在线ST算法解决此问题存在两种经典的算法,一种是在线ST算法,另外一种是离线的Tarj原创 2017-03-24 17:20:09 · 1102 阅读 · 0 评论 -
RMQ算法详解
RMQ算法详解1. 概述RMQ(Range Minimum/Maximum Query)即区间最优查询,给定区间长度为n的数列A[],对于查询Q(A,i,j)即回答从i—j区间间的最大值或最小值,解决这个问题一般采用的方法是遍历,遍历的时间复杂度是O(N),如果区间长度够长,每次回答的查询都要遍历,显然没有必要。2. RMQ算法本节介绍了一种比较高效的在线算法(ST算法)解决这个问题。所谓在线算法,翻译 2017-03-24 17:24:49 · 1747 阅读 · 0 评论