<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BillWSY的生活 &#187; 平衡树</title>
	<atom:link href="http://www.billwsy.com/tag/%e5%b9%b3%e8%a1%a1%e6%a0%91/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.billwsy.com</link>
	<description>BillWSY - 写下我生活中的点滴</description>
	<lastBuildDate>Thu, 01 Dec 2011 09:10:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>学习Treap</title>
		<link>http://www.billwsy.com/2009/02/treap-intro/</link>
		<comments>http://www.billwsy.com/2009/02/treap-intro/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 06:35:33 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[信息学奥赛]]></category>
		<category><![CDATA[treap]]></category>
		<category><![CDATA[平衡树]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=15</guid>
		<description><![CDATA[其实很久以前就有写这样一篇文章的想法，由于时间问题没有实现。停课集训马上就要开始，时间稍稍充裕，终于有机会写本文。本文不打算介绍Treap的各种细节，你可以在这里找到详细的教程。而本文仅仅列出一个大纲，以日记的方式简单地介绍Treap，作为自己的一个备忘，也希望能给初学者提供一个参考。



Treap=Tree+Heap。Treap本身是一棵二叉搜索树，它的左子树和右子树也分别是一个Treap，和一般的二叉搜索树不同的是，Treap纪录一个额外的数据，就是优先级。Treap在以关键码构成二叉搜索树的同时，还满足堆的性质(在这里我们假设节点的优先级大于该节点的孩子的优先级)。

<span class="readmore"><a href="http://www.billwsy.com/2009/02/treap-intro/" title="学习Treap">阅读全文——共2521字</a></span>]]></description>
			<content:encoded><![CDATA[<p>其实很久以前就有写这样一篇文章的想法，由于时间问题没有实现。停课集训马上就要开始，时间稍稍充裕，终于有机会写本文。本文不打算介绍Treap的各种细节，你可以在<a href="http://www.nocow.cn/index.php/Treap">这里</a>找到详细的教程。而本文仅仅列出一个大纲，以日记的方式简单地介绍Treap，作为自己的一个备忘，也希望能给初学者提供一个参考。</p>
<blockquote><p>
Treap=Tree+Heap。Treap本身是一棵二叉搜索树，它的左子树和右子树也分别是一个Treap，和一般的二叉搜索树不同的是，Treap纪录一个额外的数据，就是优先级。Treap在以关键码构成二叉搜索树的同时，还满足堆的性质(在这里我们假设节点的优先级大于该节点的孩子的优先级)。</p></blockquote>
<p>如果您是一个初学者，在读下面的文字的时候，请同时参阅<a href="http://www.nocow.cn/index.php/Treap">NOCOW上的Treap介绍</a>。</p>
<p>简单的说，Treap通过给予每个节点一个附加的随机优先级，在保证Treap数据域的排序二叉树性质的前提下，使节点的优先级同时满足堆的性质。经过种种的分析证明，在一般情况下这样做可以让Treap维持平衡。<br />
<span id="more-15"></span><br />
和大多数平衡树一样，Treap的操作用到了旋转。从图（参见<a href="http://www.nocow.cn/index.php/Treap">NOCOW上的Treap介绍</a>）上看出，右旋即将该节点的左子节点提升到根，左旋则相反。你可以用这样的方法来记住。</p>
<p>插入方法：如果当前节点为空，则新建节点，加入数据，设置特征值。否则若插入数小于当前节点，插入其左子树；如果不是，就插入右子树。插入后，要根据情况旋转，来保证堆的性质。</p>
<p>删除方法：这是比其他平衡树树好写得多的操作。首先找到要删除的节点。如果它没有子节点，则将自己删除。若只有一个子树，那么用这个子树来代替自己。如果有两个子树，那么选择优先级比较大的，将其转到根，然后才删除要删的节点所在的子树。举例来说，如果要删除当前节点，它有两个子树，其中左子树优先级比较大，那么右旋，递归地删除其右子树。</p>
<p>查找：和普通的排序二叉树一样。</p>
<p>分离合并等，都是通过虚拟节点来实现的。由于我没有实践过，所以不敢乱讲。</p>
<p>NOI2004的郁闷的出纳员和2006年的生日快乐是练习平衡树的很好的题目。当然如果您才刚入门，不妨用它来写一个排序，来检验其正确性。</p>
<p>看到有人求代码，我来贴一个吧。很丑很长，不过还算比较好写。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p15code2'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p152"><td class="code" id="p15code2"><pre class="cpp" style="font-family:monospace;">&nbsp;
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cassert&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> Treap
<span style="color: #008000;">&#123;</span>
    Treap <span style="color: #000040;">*</span>lSon , <span style="color: #000040;">*</span>rSon<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">int</span> key<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">unsigned</span> rank<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> leftRoutate<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">assert</span><span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    Treap<span style="color: #000040;">*</span> t <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon<span style="color: #008080;">;</span>
    cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000080;">=</span> t <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon<span style="color: #008080;">;</span>
    t <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
    cur <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> rightRoutate<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000dd;">assert</span><span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    Treap<span style="color: #000040;">*</span> t <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon<span style="color: #008080;">;</span>
    cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000080;">=</span> t <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon<span style="color: #008080;">;</span>
    t <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
    cur <span style="color: #000080;">=</span> t<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span> cur , <span style="color: #0000ff;">int</span> key <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        cur <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> Treap<span style="color: #008080;">;</span>
        cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
        cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #000080;">=</span> key<span style="color: #008080;">;</span>
        cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #000080;">=</span> <span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> key <span style="color: #000080;">&lt;=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            ins<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #000080;">&gt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                rightRoutate<span style="color: #008000;">&#40;</span> cur <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            ins<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #000080;">&gt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
                leftRoutate<span style="color: #008000;">&#40;</span> cur <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #008000;">&#125;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #666666;">// 维护附加域</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> findKey<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span> cur , <span style="color: #0000ff;">int</span> key <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> key <span style="color: #000080;">==</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> key <span style="color: #000080;">&lt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">return</span> findKey<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">return</span> findKey<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> del<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span> cur , <span style="color: #0000ff;">int</span> key <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> key <span style="color: #000080;">&lt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        del<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> key <span style="color: #000080;">&gt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        del<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&amp;&amp;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000dd;">delete</span> cur<span style="color: #008080;">;</span>
        cur <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
        <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&amp;&amp;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        Treap<span style="color: #000040;">*</span> t <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
        cur <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">delete</span> t<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&amp;&amp;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        Treap<span style="color: #000040;">*</span> t <span style="color: #000080;">=</span> cur<span style="color: #008080;">;</span>
        cur <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon<span style="color: #008080;">;</span>
        <span style="color: #0000dd;">delete</span> t<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span> <span style="color: #000040;">&amp;&amp;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #000080;">&gt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rank <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            rightRoutate<span style="color: #008000;">&#40;</span> cur <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            del<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
            leftRoutate<span style="color: #008000;">&#40;</span> cur <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            del<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon , key <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> midWalk<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> cur <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        midWalk<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008080;">;</span>
        midWalk<span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> minimum<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon <span style="color: #008000;">&#41;</span> cur <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> lSon<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> maximun<span style="color: #008000;">&#40;</span> Treap<span style="color: #000040;">*</span> cur <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon <span style="color: #008000;">&#41;</span> cur <span style="color: #000080;">=</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> rSon<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">return</span> cur <span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span> key<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
Treap<span style="color: #000040;">*</span> root<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">int</span> opt<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;1.Insert<span style="color: #000099; font-weight: bold;">\n</span>2.midWalk<span style="color: #000099; font-weight: bold;">\n</span>3.Delete<span style="color: #000099; font-weight: bold;">\n</span>4.Find<span style="color: #000099; font-weight: bold;">\n</span>5.getMin<span style="color: #000099; font-weight: bold;">\n</span>6.getMax<span style="color: #000099; font-weight: bold;">\n</span>0.Exit<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
    <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> opt<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000080;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> t<span style="color: #008080;">;</span>
            <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> t<span style="color: #008080;">;</span>
            ins<span style="color: #008000;">&#40;</span> root , t <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000080;">==</span> <span style="color: #0000dd;">2</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            midWalk<span style="color: #008000;">&#40;</span> root <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000080;">==</span> <span style="color: #0000dd;">3</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> t<span style="color: #008080;">;</span>
            <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> t<span style="color: #008080;">;</span>
            del<span style="color: #008000;">&#40;</span> root , t <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000080;">==</span> <span style="color: #0000dd;">4</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000ff;">int</span> x<span style="color: #008080;">;</span>
            <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> x<span style="color: #008080;">;</span>
            <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #008000;">&#40;</span> findKey<span style="color: #008000;">&#40;</span> root , x <span style="color: #008000;">&#41;</span> <span style="color: #008080;">?</span> <span style="color: #FF0000;">&quot;Yes&quot;</span> <span style="color: #008080;">:</span> <span style="color: #FF0000;">&quot;No&quot;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000080;">==</span> <span style="color: #0000dd;">5</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> minimum<span style="color: #008000;">&#40;</span> root <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> opt <span style="color: #000080;">==</span> <span style="color: #0000dd;">6</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> maximun<span style="color: #008000;">&#40;</span> root <span style="color: #008000;">&#41;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
        <span style="color: #0000dd;">cin</span> <span style="color: #000080;">&gt;&gt;</span> opt<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2009/02/treap-intro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>省选集训Day2</title>
		<link>http://www.billwsy.com/2009/02/train-day2/</link>
		<comments>http://www.billwsy.com/2009/02/train-day2/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 11:32:34 +0000</pubDate>
		<dc:creator>BillWSY</dc:creator>
				<category><![CDATA[信息学奥赛]]></category>
		<category><![CDATA[treap]]></category>
		<category><![CDATA[平衡树]]></category>
		<category><![CDATA[省选]]></category>
		<category><![CDATA[集训]]></category>

		<guid isPermaLink="false">http://www.billwsy.com/?p=10</guid>
		<description><![CDATA[二月3日，徐持衡老师上课的第二天……

早上还是考试，3题4小时，一道数据结构，一道DP，一道图论。数据结构不会写，朴素地骗分，DP和图论诡异地错掉了。

下午讲了SBT，Splay等。昨天讲的网络流和今天的平衡树，都是以前惧怕的东西，发现今天来写轻松了多。我感觉考完高一的联赛后就基本没掌握什么新知识了，实际还是有一点点进步的。

<span class="readmore"><a href="http://www.billwsy.com/2009/02/train-day2/" title="省选集训Day2">阅读全文——共319字</a></span>]]></description>
			<content:encoded><![CDATA[<p>二月3日，徐持衡老师上课的第二天……</p>
<p>早上还是考试，3题4小时，一道数据结构，一道DP，一道图论。数据结构不会写，朴素地骗分，DP和图论诡异地错掉了。</p>
<p>下午讲了SBT，Splay等。昨天讲的网络流和今天的平衡树，都是以前惧怕的东西，发现今天来写轻松了多。我感觉考完高一的联赛后就基本没掌握什么新知识了，实际还是有一点点进步的。</p>
<p>由于还是不能理解SBT，我还是写Treap好了……实现起来真的比较轻松啊，但是删除还是不怎么熟练，省选将近，要赶快复习才是。</p>
<p>发现玩校内网的人很多，在那加的几位大牛，也在这个Blog上留下了足迹。谢谢啦！大牛们要教教我这个fresh fish啊:-)</p>
<p>今天就不贴巨丑的代码了，热烈欢迎访问本页的大牛，感谢在下面评论的大牛！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.billwsy.com/2009/02/train-day2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

