<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Terro的OI Blog]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Terro</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Terro]]></copyright><item><title><![CDATA[优先队列（Heap版）]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1749885</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1749885</guid><author>Terro</author><pubDate>Sat, 18 Aug 2007 19:32:00 +0800</pubDate><description><![CDATA[这个优先队列用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]]></description><category></category></item><item><title><![CDATA[Trie]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1745699</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1745699</guid><author>Terro</author><pubDate>Wed, 15 Aug 2007 21:58:00 +0800</pubDate><description><![CDATA[Trie,又称字典树、单词查找树,是一种树形结构，用于保存大量的字符串。它的优点是：利用字符串的公共前缀来节约存储空间。 它有3个基本性质： 1. 根节点不包含字符，除根节点外每一个节点都只包含一个字符。 2. 从根节点到某一节点，路径上经过的字符连接起来，为该节点对应的字符串。 3. 每个节点的所有子节点包含的字符都不相同。 Trie的实现见下面的代码，具体操作见注释。这个写的有些垃]]></description><category></category></item><item><title><![CDATA[树状数组（Binary Indexed Tree）]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1741544</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1741544</guid><author>Terro</author><pubDate>Mon, 13 Aug 2007 21:20:00 +0800</pubDate><description><![CDATA[树状数组，数组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]，]]></description><category></category></item><item><title><![CDATA[线段树]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1739459</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1739459</guid><author>Terro</author><pubDate>Sun, 12 Aug 2007 12:47:00 +0800</pubDate><description><![CDATA[线段树的定义 经常遇到一些与区间有关的题目，这类题目用通常的方法很麻烦，但是有一种特殊的数据结构——线段树（Segment Tree）可以很好地解决有关区间上的问题。线段树是一棵二叉树，记为T(a,b)，参数a，b表示区间[a，b]，其中，b-a为区间的长度，记为L。其根为：[a,b]其左儿子为：[a,(a+b)/2]其右儿子为：[(a+b)/2,b]若L=1，则为叶子]]></description><category></category></item><item><title><![CDATA[Treap]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1737535</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1737535</guid><author>Terro</author><pubDate>Fri, 10 Aug 2007 21:57:00 +0800</pubDate><description><![CDATA[ Treap还是比较好写的，但是要加入动态顺序统计和parent指针就稍微有些麻烦了。一个重要的经验是采用哨兵（本例中是nullnode），这样会带来很大方便的。 //结点类型typedef struct node...{    int key, pri, size;    //关键字，权值，统计量    node *left, *right, *parent;    //左孩子、右孩]]></description><category></category></item><item><title><![CDATA[并查集（disjoint_set）]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1736349</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1736349</guid><author>Terro</author><pubDate>Fri, 10 Aug 2007 15:34:00 +0800</pubDate><description><![CDATA[ //并查集（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]]></description><category></category></item><item><title><![CDATA[Hash_Table（散列表）]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1736127</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1736127</guid><author>Terro</author><pubDate>Fri, 10 Aug 2007 13:38:00 +0800</pubDate><description><![CDATA[以下代码仅在 g++ 3.4.2中编译通过，令人惊奇的是VC 2005竟然编译出错，看来以后用VC 2005还得小心才行。 //结点类型template typename T, typename Tar>struct node...{    T data;    Tar value;    node* next;    //初始化为空    node()        : value(]]></description><category></category></item><item><title><![CDATA[队列]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1735147</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1735147</guid><author>Terro</author><pubDate>Thu, 09 Aug 2007 21:31:00 +0800</pubDate><description><![CDATA[//队列的模板实现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)    ...{}   ]]></description><category></category></item><item><title><![CDATA[栈]]></title><link>https://blog.youkuaiyun.com/Terro/article/details/1735085</link><guid>https://blog.youkuaiyun.com/Terro/article/details/1735085</guid><author>Terro</author><pubDate>Thu, 09 Aug 2007 21:22:00 +0800</pubDate><description><![CDATA[栈是一种很简单的数据结构，不用介绍了。 //栈的模板实现template typename T>class Stack...{private:    int N;    T* s;    int top;public:    //构造函数，需指定栈的容量    Stack(int size)        : N(size), s(new T[size]), top(-1)    ..]]></description><category></category></item></channel></rss>