﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Vontroy-随笔分类-线段树|树状数组</title><link>http://www.cppblog.com/vontroy/category/14337.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 20 Jan 2013 06:37:35 GMT</lastBuildDate><pubDate>Sun, 20 Jan 2013 06:37:35 GMT</pubDate><ttl>60</ttl><item><title>POJ 3468 A Simple Problem with Integers</title><link>http://www.cppblog.com/vontroy/archive/2010/07/29/121523.html</link><dc:creator>Vontroy</dc:creator><author>Vontroy</author><pubDate>Wed, 28 Jul 2010 23:16:00 GMT</pubDate><guid>http://www.cppblog.com/vontroy/archive/2010/07/29/121523.html</guid><wfw:comment>http://www.cppblog.com/vontroy/comments/121523.html</wfw:comment><comments>http://www.cppblog.com/vontroy/archive/2010/07/29/121523.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vontroy/comments/commentRss/121523.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vontroy/services/trackbacks/121523.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-left-color: #cccccc; word-break: break-all; padding-top: 4px"><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;CNode<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,&nbsp;R;<br />&nbsp;&nbsp;&nbsp;&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pLeft,&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRight;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;nSum,&nbsp;Inc;<br />};<br /><br />CNode&nbsp;Tree[</span><span style="color: #000000">1000000</span><span style="color: #000000">];<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;BuildTree(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;R&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;L;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;R;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nSum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;L&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;R&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;nCount</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Tree&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;nCount</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Tree&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;L,&nbsp;(&nbsp;L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;(&nbsp;L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;R&nbsp;);<br />}<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Insert(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;v&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;i&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nSum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nSum&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;i&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;i,&nbsp;v&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;i,&nbsp;v);<br />}<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Add(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b,&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;c&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;a&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;b&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nSum&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;(&nbsp;b&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;)&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;b&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;a,&nbsp;b,&nbsp;c&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;a&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;a,&nbsp;b,&nbsp;c&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;a,&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;c&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;b,&nbsp;c&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;QuerynSum(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;a&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;b&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nSum&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;)&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc);<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nSum&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;)&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc;<br />&nbsp;&nbsp;&nbsp;&nbsp;Add(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L,&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Add(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R,&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Inc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;b&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;QuerynSum(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;a,&nbsp;b&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;a&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;QuerynSum&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;a,&nbsp;b);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;QuerynSum(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;a,&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;QuerynSum(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;b&nbsp;)&nbsp;;<br />}<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,q;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">n,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">q&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;Tree,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;n;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(&nbsp;Tree,&nbsp;i,&nbsp;temp&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;c_temp[</span><span style="color: #000000">10</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;b,&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;q;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;c_temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;c_temp[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">C</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">b,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">c&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(&nbsp;Tree,&nbsp;a,&nbsp;b,&nbsp;c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">b&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%I64d\n</span><span style="color: #000000">"</span><span style="color: #000000">,QuerynSum(&nbsp;Tree,&nbsp;a,&nbsp;b&nbsp;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}</span></div><img src ="http://www.cppblog.com/vontroy/aggbug/121523.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vontroy/" target="_blank">Vontroy</a> 2010-07-29 07:16 <a href="http://www.cppblog.com/vontroy/archive/2010/07/29/121523.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 3264 Balanced Lineup </title><link>http://www.cppblog.com/vontroy/archive/2010/07/29/121522.html</link><dc:creator>Vontroy</dc:creator><author>Vontroy</author><pubDate>Wed, 28 Jul 2010 23:14:00 GMT</pubDate><guid>http://www.cppblog.com/vontroy/archive/2010/07/29/121522.html</guid><wfw:comment>http://www.cppblog.com/vontroy/comments/121522.html</wfw:comment><comments>http://www.cppblog.com/vontroy/archive/2010/07/29/121522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vontroy/comments/commentRss/121522.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vontroy/services/trackbacks/121522.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-left-color: #cccccc; word-break: break-all; padding-top: 4px"><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;MY_MAX&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">99999999</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;MY_MIN&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">99999999</span><span style="color: #000000">;<br /><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;CNode<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;R,&nbsp;L;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nMax,&nbsp;nMin;<br />&nbsp;&nbsp;&nbsp;&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pLeft,&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRight;<br />}Tree[</span><span style="color: #000000">1000000</span><span style="color: #000000">];<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">CNode&nbsp;Tree[1000000];</span><span style="color: #008000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nMax,&nbsp;nMin;<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;BuildTree(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;R&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;L;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;R;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;MY_MAX;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;MY_MIN;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;R&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;L&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Tree&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Tree&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;L,&nbsp;(&nbsp;L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;(&nbsp;L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;R&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Insert(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;v&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;R&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;i&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;nMin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;nMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;min(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMin,v&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;max(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMax,&nbsp;v&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;i&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;i,&nbsp;v&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;i,&nbsp;v&nbsp;);<br />}<br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Query(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;e&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMax&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;nMax&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMin&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;nMin&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;s&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;e&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;max(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMax,&nbsp;nMax);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nMin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;min(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">nMin,nMin);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;e&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;s,&nbsp;e&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;s&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;s,&nbsp;e&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,&nbsp;s,&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,&nbsp;(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R)&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;e&nbsp;)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,&nbsp;q,&nbsp;s,&nbsp;e;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;h;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">n,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">q);<br />&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;Tree,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;n;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">h);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(&nbsp;Tree,&nbsp;i,&nbsp;h&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;q;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">s,</span><span style="color: #000000">&amp;</span><span style="color: #000000">e&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nMax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;MY_MAX;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nMin&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;MY_MIN;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query(&nbsp;Tree,&nbsp;s,&nbsp;e&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;nMax&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;nMin)&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}</span></div><img src ="http://www.cppblog.com/vontroy/aggbug/121522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vontroy/" target="_blank">Vontroy</a> 2010-07-29 07:14 <a href="http://www.cppblog.com/vontroy/archive/2010/07/29/121522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 2528 Mayor's posters </title><link>http://www.cppblog.com/vontroy/archive/2010/07/28/121507.html</link><dc:creator>Vontroy</dc:creator><author>Vontroy</author><pubDate>Wed, 28 Jul 2010 14:45:00 GMT</pubDate><guid>http://www.cppblog.com/vontroy/archive/2010/07/28/121507.html</guid><wfw:comment>http://www.cppblog.com/vontroy/comments/121507.html</wfw:comment><comments>http://www.cppblog.com/vontroy/archive/2010/07/28/121507.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vontroy/comments/commentRss/121507.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vontroy/services/trackbacks/121507.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-left-color: #cccccc; word-break: break-all; padding-top: 4px"><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">math.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n;<br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;CPost<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,R;<br />};<br />CPost&nbsp;posters[</span><span style="color: #000000">10100</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x[</span><span style="color: #000000">20200</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;hash[</span><span style="color: #000000">10000010</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;CNode&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,R;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;bCovered;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">本区间是否已经被完全覆盖&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pLeft,&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRight;<br />};<br />CNode&nbsp;Tree[</span><span style="color: #000000">100000</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nNodeCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;Mid(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R)</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;BuildTree(&nbsp;CNode&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;R)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;L;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;R;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">bCovered&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;L&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;R&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;nNodeCount&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Tree&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nNodeCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;nNodeCount&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Tree&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nNodeCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,L,(L</span><span style="color: #000000">+</span><span style="color: #000000">R)</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,(L</span><span style="color: #000000">+</span><span style="color: #000000">R)</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,R);<br />}<br /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;Post(&nbsp;CNode&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pRoot,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;L,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;R)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">bCovered&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">L&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;L&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">R&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;R)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">bCovered&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;bResult&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;R&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;Mid(pRoot)&nbsp;)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bResult&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Post(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft,L,R);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;L&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;Mid(pRoot)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bResult&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Post(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,L,R);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;b1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Post(pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft&nbsp;,L,Mid(pRoot));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;b2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Post(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight,Mid(pRoot)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,R);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bResult&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b1&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;b2;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">要更新根节点的覆盖情况</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pLeft</span><span style="color: #000000">-&gt;</span><span style="color: #000000">bCovered&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">pRight</span><span style="color: #000000">-&gt;</span><span style="color: #000000">bCovered&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pRoot</span><span style="color: #000000">-&gt;</span><span style="color: #000000">bCovered&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;bResult;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j,k;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">t);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCaseNo&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(t</span><span style="color: #000000">--</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCaseNo&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;n;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;)&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;posters[i].L,</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;posters[i].R&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[nCount</span><span style="color: #000000">++</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;posters[i].L;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[nCount</span><span style="color: #000000">++</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;posters[i].R;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(x,x</span><span style="color: #000000">+</span><span style="color: #000000">nCount);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;unique(x,x</span><span style="color: #000000">+</span><span style="color: #000000">nCount)&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;x;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">去掉重复元素</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;nCount;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash[x[i]]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nNodeCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BuildTree(&nbsp;Tree,</span><span style="color: #000000">0</span><span style="color: #000000">,nCount&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;nSum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">&nbsp;)&nbsp;{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;从后往前看板是否看得见</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(&nbsp;Post(Tree,hash[posters[i].L],hash[posters[i].R]))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nSum&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,nSum);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}</span></div><img src ="http://www.cppblog.com/vontroy/aggbug/121507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vontroy/" target="_blank">Vontroy</a> 2010-07-28 22:45 <a href="http://www.cppblog.com/vontroy/archive/2010/07/28/121507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>