自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 优先队列(Heap版)

这个优先队列用heap实现,代码改编自CLRS(算法导论)。 #define left(i) ((i) #define right(i) (((i) #define parent(i) ((i) >> 1)#define swap(a, b) {T t = a; a = b; b = t;}//测试用的结构体struct test...{    int key;    string d

2007-08-18 19:32:00 619

原创 Trie

Trie,又称字典树、单词查找树,是一种树形结构,用于保存大量的字符串。它的优点是:利用字符串的公共前缀来节约存储空间。 它有3个基本性质: 1. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。 2. 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 3. 每个节点的所有子节点包含的字符都不相同。 Trie的实现见下面的代码,具体操作见注释。这个写的有些垃

2007-08-15 21:58:00 1151

原创 树状数组(Binary Indexed Tree)

树状数组,数组a是原数组,下面是他们的一些关系数组C就是C1=a1C2=a1+a2C3=a3C4=a1+a2+a3+a4C5=a5……C8=a1+a2+a3+a4+a5+a6+a7+a8……C2^n=a1+a2+….+a2^n那么树状数组具体怎么定义的呢?思考上面的规律,不难得出结论:对于序列a,我们设一个数组C定义C[i] = a[i – 2^k + 1] + … + a[i],

2007-08-13 21:20:00 965

原创 线段树

线段树的定义 经常遇到一些与区间有关的题目,这类题目用通常的方法很麻烦,但是有一种特殊的数据结构——线段树(Segment Tree)可以很好地解决有关区间上的问题。线段树是一棵二叉树,记为T(a,b),参数a,b表示区间[a,b],其中,b-a为区间的长度,记为L。其根为:[a,b]其左儿子为:[a,(a+b)/2]其右儿子为:[(a+b)/2,b]若L=1,则为叶子

2007-08-12 12:47:00 970

原创 Treap

 Treap还是比较好写的,但是要加入动态顺序统计和parent指针就稍微有些麻烦了。一个重要的经验是采用哨兵(本例中是nullnode),这样会带来很大方便的。 //结点类型typedef struct node...{    int key, pri, size;    //关键字,权值,统计量    node *left, *right, *parent;    //左孩子、右孩

2007-08-10 21:57:00 859

原创 并查集(disjoint_set)

 //并查集(disjoint_set)//构造函数:disjoint_set(const int& l),l:容量class disjoint_set...{private:    int* p;    //存储public:    disjoint_set(int l)        : p(new int[l+1])    ...{        memset (p, -1, siz

2007-08-10 15:34:00 808

原创 Hash_Table(散列表)

以下代码仅在 g++ 3.4.2中编译通过,令人惊奇的是VC 2005竟然编译出错,看来以后用VC 2005还得小心才行。 //结点类型template typename T, typename Tar>struct node...{    T data;    Tar value;    node* next;    //初始化为空    node()        : value(

2007-08-10 13:38:00 731

原创 队列

//队列的模板实现template typename T>class Queue...{private:    int N;    T* s;    int head, tail;public:    //构造函数,需指定队列的容量    Queue(int size)        : N(size), s(new T[size]), head(0), tail(0)    ...{}   

2007-08-09 21:31:00 696

原创

栈是一种很简单的数据结构,不用介绍了。 //栈的模板实现template typename T>class Stack...{private:    int N;    T* s;    int top;public:    //构造函数,需指定栈的容量    Stack(int size)        : N(size), s(new T[size]), top(-1)    ..

2007-08-09 21:22:00 557

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除