算法:线段树

线段树 Interval Tree,又称区间树 Segment Tree,其中每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。,因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。

poj 2388 寻找中位数

这也是Google面试题

股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值)。

用双堆存储,一个大根堆,一个小根堆,则Inert为O(logn),Median为O(1)

poj 3164 最小树形图 朱刘算法

最小树形图,就是给有向带权图中指定一个特殊的点root,求一棵以root为根的有向生成树T,并且T中所有边的总权值最小。最小树形图的第一个算法是 1965年朱永津和刘振宏提出的复杂度为O(VE)的算法。