摘要: 1.定义 RMQ,Range Min/Max Query,区间最小/大值查询。 对于数组A, 定义Query(i,j)= min {Ai,Ai+1,…Aj},即为RMQ问题。 算法思想: 使用Tarjan的Sparse-Table算法,简称ST算法。 令d(i,j)表示从i开始的,长度为2^j的区间中的最小值,则用递推的方式可得: ... 阅读全文
posted @ 2015-03-27 23:43 _DN 阅读(210) 评论(0) 推荐(0)
摘要: 1.基本概念 线段树,Segment tree,是一颗二叉树,树的每个节点代表一个区间[a,b]。故又叫做区间树,Interval tree。 用于解决线段的并,或区间覆盖问题。 性质:线段树是平衡二叉树,最大深度为logN(N为线段树所表示区间的长度)。 2.线段树API 存储结构: public class Node { public... 阅读全文
posted @ 2015-03-27 23:23 _DN 阅读(489) 评论(0) 推荐(0)
摘要: 1.介绍 算术表达式的计算,是比较常见的问题,但这个问题的背后隐藏着栈的思想。 这里就介绍使用两个栈来计算表达式的方法。 2. 算法 2.1 定义: a) 建立两个栈: 一个是数据栈dataStak,用于存放数据; 一个是符号栈operatorStack,用于存放运算符; b) 建立运算符号之间的优先级表,用于比较两个符号之间的优先级; 优先级定义为三种运算结果:>(表示高于),... 阅读全文
posted @ 2015-03-27 22:54 _DN 阅读(674) 评论(0) 推荐(0)