﻿<?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++博客-英雄哪里出来-随笔分类-线段树</title><link>http://www.cppblog.com/menjitianya/category/16397.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 26 Dec 2015 18:05:58 GMT</lastBuildDate><pubDate>Sat, 26 Dec 2015 18:05:58 GMT</pubDate><ttl>60</ttl><item><title>PKU 3145 Harmony Forever</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/10/143857.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 10 Apr 2011 03:12:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/10/143857.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143857.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/10/143857.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143857.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143857.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=3145/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;对于一个集合S，一共两种操作：1.&nbsp;B&nbsp;X:&nbsp;添加一个数X到S.&nbsp;第K个B操作发生在第K个时间点，并且每个之前S集合中没有X。2.&nbsp;A&nbsp;Y:&nbsp;在S集合中所有数中,&nbsp;被Y除后余数最小...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/10/143857.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-10 11:12 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/10/143857.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2828 Buy Tickets</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/09/143805.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sat, 09 Apr 2011 07:06:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/09/143805.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143805.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/09/143805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143805.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143805.html</trackback:ping><description><![CDATA[<p><strong>题目链接：</strong><a href="http://poj.org/problem?id=2828">http://poj.org/problem?id=2828</a></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_489_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_489_Open_Text.style.display='none'; Codehighlighter1_0_489_Closed_Image.style.display='inline'; Codehighlighter1_0_489_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_489_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_489_Closed_Text.style.display='none'; Codehighlighter1_0_489_Open_Image.style.display='inline'; Codehighlighter1_0_489_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_489_Closed_Text>/**/</span><span id=Codehighlighter1_0_489_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给定N(1&nbsp;&lt;=&nbsp;N&nbsp;&lt;=&nbsp;200000)个整数对(A,B)，表示在A右边的位置插入一个B，<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">经过N次操作后问最后的B序列的排列情况。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题解：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;树状数组&nbsp;或者&nbsp;线段树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;这题的数据量比较大，一开始可以模拟一下过程，但是直接暴力肯定是超时<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">的，因为每次插入过程，这个位置的后面的元素必然是要顺序往后移动的。所以<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">总的复杂度高达O(n^2)。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;但是这个问题可以转化，我们这样考虑，对于任意两个整数对(A1,B1)和(A2,B2)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">保证(A1,B1)在(A2,B2)之前出现，如果A1小于A2，后面的整数对是不影响前面整<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">数对的位置关系的，否则B1的位置必然要受到B2的影响而向后移动一位。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;于是A1和A2之间就存在一个逆序关系，我们可以联想到树状数组求逆序数时<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">候的做法，从后往前，对于最后一个数，它的位置就是An，因为之后没有插入数<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">了，它已经稳定下来了，然后将这个位置插入到树状数组的相应位置去，每次扫<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">描到当前数的时候二分枚举当前数前面有多少&#8220;空位&#8221;，空位的统计可以采用树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">状数组的成段求和，找到后将这个数插入，N次操作后答案就保存下来了。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;200010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;c[maxn];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_590_603_Open_Image onclick="this.style.display='none'; Codehighlighter1_590_603_Open_Text.style.display='none'; Codehighlighter1_590_603_Closed_Image.style.display='inline'; Codehighlighter1_590_603_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_590_603_Closed_Image onclick="this.style.display='none'; Codehighlighter1_590_603_Closed_Text.style.display='none'; Codehighlighter1_590_603_Open_Image.style.display='inline'; Codehighlighter1_590_603_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;point&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_590_603_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_590_603_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;A,&nbsp;B;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">pt[maxn];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_633_653_Open_Image onclick="this.style.display='none'; Codehighlighter1_633_653_Open_Text.style.display='none'; Codehighlighter1_633_653_Closed_Image.style.display='inline'; Codehighlighter1_633_653_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_633_653_Closed_Image onclick="this.style.display='none'; Codehighlighter1_633_653_Closed_Text.style.display='none'; Codehighlighter1_633_653_Open_Image.style.display='inline'; Codehighlighter1_633_653_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;lowbit(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_633_653_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_633_653_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_674_733_Open_Image onclick="this.style.display='none'; Codehighlighter1_674_733_Open_Text.style.display='none'; Codehighlighter1_674_733_Closed_Image.style.display='inline'; Codehighlighter1_674_733_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_674_733_Closed_Image onclick="this.style.display='none'; Codehighlighter1_674_733_Closed_Text.style.display='none'; Codehighlighter1_674_733_Open_Image.style.display='inline'; Codehighlighter1_674_733_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pos)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_674_733_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_674_733_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_693_731_Open_Image onclick="this.style.display='none'; Codehighlighter1_693_731_Open_Text.style.display='none'; Codehighlighter1_693_731_Closed_Image.style.display='inline'; Codehighlighter1_693_731_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_693_731_Closed_Image onclick="this.style.display='none'; Codehighlighter1_693_731_Closed_Text.style.display='none'; Codehighlighter1_693_731_Open_Image.style.display='inline'; Codehighlighter1_693_731_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(pos&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_693_731_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_693_731_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[pos]&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;lowbit(pos);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_753_836_Open_Image onclick="this.style.display='none'; Codehighlighter1_753_836_Open_Text.style.display='none'; Codehighlighter1_753_836_Closed_Image.style.display='inline'; Codehighlighter1_753_836_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_753_836_Closed_Image onclick="this.style.display='none'; Codehighlighter1_753_836_Closed_Text.style.display='none'; Codehighlighter1_753_836_Open_Image.style.display='inline'; Codehighlighter1_753_836_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sum(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pos)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_753_836_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_753_836_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;s&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_783_823_Open_Image onclick="this.style.display='none'; Codehighlighter1_783_823_Open_Text.style.display='none'; Codehighlighter1_783_823_Closed_Image.style.display='inline'; Codehighlighter1_783_823_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_783_823_Closed_Image onclick="this.style.display='none'; Codehighlighter1_783_823_Closed_Text.style.display='none'; Codehighlighter1_783_823_Open_Image.style.display='inline'; Codehighlighter1_783_823_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(pos&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_783_823_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_783_823_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;c[pos];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;lowbit(pos);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;s;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ans[maxn];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_866_1394_Open_Image onclick="this.style.display='none'; Codehighlighter1_866_1394_Open_Text.style.display='none'; Codehighlighter1_866_1394_Closed_Image.style.display='inline'; Codehighlighter1_866_1394_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_866_1394_Closed_Image onclick="this.style.display='none'; Codehighlighter1_866_1394_Closed_Text.style.display='none'; Codehighlighter1_866_1394_Open_Image.style.display='inline'; Codehighlighter1_866_1394_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_866_1394_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_866_1394_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img id=Codehighlighter1_907_1381_Open_Image onclick="this.style.display='none'; Codehighlighter1_907_1381_Open_Text.style.display='none'; Codehighlighter1_907_1381_Closed_Image.style.display='inline'; Codehighlighter1_907_1381_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_907_1381_Closed_Image onclick="this.style.display='none'; Codehighlighter1_907_1381_Closed_Text.style.display='none'; Codehighlighter1_907_1381_Open_Image.style.display='inline'; Codehighlighter1_907_1381_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(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">n)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_907_1381_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_907_1381_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_974_1032_Open_Image onclick="this.style.display='none'; Codehighlighter1_974_1032_Open_Text.style.display='none'; Codehighlighter1_974_1032_Closed_Image.style.display='inline'; Codehighlighter1_974_1032_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_974_1032_Closed_Image onclick="this.style.display='none'; Codehighlighter1_974_1032_Closed_Text.style.display='none'; Codehighlighter1_974_1032_Open_Image.style.display='inline'; Codehighlighter1_974_1032_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_974_1032_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_974_1032_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pt[i].A,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pt[i].B);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt[i].A&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1060_1278_Open_Image onclick="this.style.display='none'; Codehighlighter1_1060_1278_Open_Text.style.display='none'; Codehighlighter1_1060_1278_Closed_Image.style.display='inline'; Codehighlighter1_1060_1278_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1060_1278_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1060_1278_Closed_Text.style.display='none'; Codehighlighter1_1060_1278_Open_Image.style.display='inline'; Codehighlighter1_1060_1278_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1060_1278_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1060_1278_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;n;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">as</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">;<br><img id=Codehighlighter1_1122_1240_Open_Image onclick="this.style.display='none'; Codehighlighter1_1122_1240_Open_Text.style.display='none'; Codehighlighter1_1122_1240_Closed_Image.style.display='inline'; Codehighlighter1_1122_1240_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1122_1240_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1122_1240_Closed_Text.style.display='none'; Codehighlighter1_1122_1240_Open_Image.style.display='inline'; Codehighlighter1_1122_1240_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1122_1240_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1122_1240_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_1180_1215_Open_Image onclick="this.style.display='none'; Codehighlighter1_1180_1215_Open_Text.style.display='none'; Codehighlighter1_1180_1215_Closed_Image.style.display='inline'; Codehighlighter1_1180_1215_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1180_1215_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1180_1215_Closed_Text.style.display='none'; Codehighlighter1_1180_1215_Open_Image.style.display='inline'; Codehighlighter1_1180_1215_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(m&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;sum(m)&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;pt[i].A)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1180_1215_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1180_1215_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans[</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pt[i].B;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1306_1366_Open_Image onclick="this.style.display='none'; Codehighlighter1_1306_1366_Open_Text.style.display='none'; Codehighlighter1_1306_1366_Closed_Image.style.display='inline'; Codehighlighter1_1306_1366_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1306_1366_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1306_1366_Closed_Text.style.display='none'; Codehighlighter1_1306_1366_Open_Image.style.display='inline'; Codehighlighter1_1306_1366_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1306_1366_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1306_1366_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ans[i]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-09 15:06 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/09/143805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2637 WorstWeather Ever</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/09/143803.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sat, 09 Apr 2011 06:00:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/09/143803.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143803.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/09/143803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143803.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143803.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=2637/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给定N(N&nbsp;&lt;=&nbsp;50000)条信息，表示第yi年的降水量是ri，然后给出M(M&nbsp;&lt;=&nbsp;10000)条询问，每条询问的格式是Y&nbsp;X，表示自从第Y年以来X这一年是最大的降水量，问这句话正确与否。&nb...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/09/143803.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-09 14:00 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/09/143803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 2871 Memory Control</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/08/143709.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Fri, 08 Apr 2011 07:26:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/08/143709.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143709.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/08/143709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143709.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143709.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=2871/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;现在有1到N(N&nbsp;&lt;=&nbsp;50000)个连续内存块，然后给出四种操作：1.&nbsp;&nbsp;Reset&nbsp;释放所有内存块，并且输出&#8220;Reset&nbsp;Now&#8221;。2...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/08/143709.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-08 15:26 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/08/143709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 1166  敌兵布阵</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/07/143635.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 07 Apr 2011 10:04:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/07/143635.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143635.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/07/143635.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143635.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143635.html</trackback:ping><description><![CDATA[题目链接：<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1166">http://acm.hdu.edu.cn/showproblem.php?pid=1166</a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_374_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_374_Open_Text.style.display='none'; Codehighlighter1_0_374_Closed_Image.style.display='inline'; Codehighlighter1_0_374_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_374_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_374_Closed_Text.style.display='none'; Codehighlighter1_0_374_Open_Image.style.display='inline'; Codehighlighter1_0_374_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_374_Closed_Text>/**/</span><span id=Codehighlighter1_0_374_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给定N(N&nbsp;&lt;=&nbsp;50000)个数,&nbsp;表示敌人有N个工兵营地，接下来有N个正整数,&nbsp;第<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">i个正整数ai代表第i个工兵营地里开始时有ai个人（1&lt;=ai&lt;=50）。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">接下来每行有一条命令，命令有4种形式：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">(1)Add&nbsp;i&nbsp;j&nbsp;&nbsp;&nbsp;,i和j为正整数,&nbsp;表示第i个营地增加j个人（j不超过30）<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">(2)Sub&nbsp;i&nbsp;j&nbsp;&nbsp;&nbsp;,i和j为正整数,&nbsp;表示第i个营地减少j个人（j不超过30）;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">(3)Query&nbsp;i&nbsp;j&nbsp;,i和j为正整数,&nbsp;i&lt;=j，表示询问第i到第j个营地的总人数;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">(4)End&nbsp;表示结束，这条命令在每组数据最后出现<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">解法：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;树状数组&nbsp;或者&nbsp;线段树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;典型的树状数组模板题，Add和Sub是同一个操作，Sub就是Add一个负的值，只<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">是Sub之前先要判断这个点有没有这么多，询问就是利用树状数组的成段求和。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;1000010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;c[maxn],&nbsp;n;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[maxn];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ch[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_504_527_Open_Image onclick="this.style.display='none'; Codehighlighter1_504_527_Open_Text.style.display='none'; Codehighlighter1_504_527_Closed_Image.style.display='inline'; Codehighlighter1_504_527_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_504_527_Closed_Image onclick="this.style.display='none'; Codehighlighter1_504_527_Closed_Text.style.display='none'; Codehighlighter1_504_527_Open_Image.style.display='inline'; Codehighlighter1_504_527_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;lowbit(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_504_527_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_504_527_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">x);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_555_632_Open_Image onclick="this.style.display='none'; Codehighlighter1_555_632_Open_Text.style.display='none'; Codehighlighter1_555_632_Closed_Image.style.display='inline'; Codehighlighter1_555_632_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_555_632_Closed_Image onclick="this.style.display='none'; Codehighlighter1_555_632_Closed_Text.style.display='none'; Codehighlighter1_555_632_Open_Image.style.display='inline'; Codehighlighter1_555_632_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Add(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;add)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_555_632_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_555_632_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_575_630_Open_Image onclick="this.style.display='none'; Codehighlighter1_575_630_Open_Text.style.display='none'; Codehighlighter1_575_630_Closed_Image.style.display='inline'; Codehighlighter1_575_630_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_575_630_Closed_Image onclick="this.style.display='none'; Codehighlighter1_575_630_Closed_Text.style.display='none'; Codehighlighter1_575_630_Open_Image.style.display='inline'; Codehighlighter1_575_630_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(x&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_575_630_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_575_630_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[x]&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;add;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;lowbit(x);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_650_749_Open_Image onclick="this.style.display='none'; Codehighlighter1_650_749_Open_Text.style.display='none'; Codehighlighter1_650_749_Closed_Image.style.display='inline'; Codehighlighter1_650_749_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_650_749_Closed_Image onclick="this.style.display='none'; Codehighlighter1_650_749_Closed_Text.style.display='none'; Codehighlighter1_650_749_Open_Image.style.display='inline'; Codehighlighter1_650_749_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sum(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_650_749_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_650_749_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;s&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_684_733_Open_Image onclick="this.style.display='none'; Codehighlighter1_684_733_Open_Text.style.display='none'; Codehighlighter1_684_733_Closed_Image.style.display='inline'; Codehighlighter1_684_733_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_684_733_Closed_Image onclick="this.style.display='none'; Codehighlighter1_684_733_Closed_Text.style.display='none'; Codehighlighter1_684_733_Open_Image.style.display='inline'; Codehighlighter1_684_733_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(x&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_684_733_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_684_733_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;c[x];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;lowbit(x);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;s;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_763_1517_Open_Image onclick="this.style.display='none'; Codehighlighter1_763_1517_Open_Text.style.display='none'; Codehighlighter1_763_1517_Closed_Image.style.display='inline'; Codehighlighter1_763_1517_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_763_1517_Closed_Image onclick="this.style.display='none'; Codehighlighter1_763_1517_Closed_Text.style.display='none'; Codehighlighter1_763_1517_Open_Image.style.display='inline'; Codehighlighter1_763_1517_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_763_1517_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_763_1517_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;t,&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">,&nbsp;bs,&nbsp;i,&nbsp;q&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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">t);<br><img id=Codehighlighter1_830_1515_Open_Image onclick="this.style.display='none'; Codehighlighter1_830_1515_Open_Text.style.display='none'; Codehighlighter1_830_1515_Closed_Image.style.display='inline'; Codehighlighter1_830_1515_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_830_1515_Closed_Image onclick="this.style.display='none'; Codehighlighter1_830_1515_Closed_Text.style.display='none'; Codehighlighter1_830_1515_Open_Image.style.display='inline'; Codehighlighter1_830_1515_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_830_1515_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_830_1515_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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">n);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(c,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(c));<br><img id=Codehighlighter1_922_990_Open_Image onclick="this.style.display='none'; Codehighlighter1_922_990_Open_Text.style.display='none'; Codehighlighter1_922_990_Closed_Image.style.display='inline'; Codehighlighter1_922_990_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_922_990_Closed_Image onclick="this.style.display='none'; Codehighlighter1_922_990_Closed_Text.style.display='none'; Codehighlighter1_922_990_Open_Image.style.display='inline'; Codehighlighter1_922_990_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_922_990_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_922_990_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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">a[i]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(i,&nbsp;a[i]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Case&nbsp;%d:\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;q</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);<br><img id=Codehighlighter1_1067_1506_Open_Image onclick="this.style.display='none'; Codehighlighter1_1067_1506_Open_Text.style.display='none'; Codehighlighter1_1067_1506_Closed_Image.style.display='inline'; Codehighlighter1_1067_1506_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1067_1506_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1067_1506_Closed_Text.style.display='none'; Codehighlighter1_1067_1506_Open_Image.style.display='inline'; Codehighlighter1_1067_1506_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;,&nbsp;ch)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1067_1506_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1067_1506_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(ch,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">End</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_1157_1268_Open_Image onclick="this.style.display='none'; Codehighlighter1_1157_1268_Open_Text.style.display='none'; Codehighlighter1_1157_1268_Closed_Image.style.display='inline'; Codehighlighter1_1157_1268_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1157_1268_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1157_1268_Closed_Text.style.display='none'; Codehighlighter1_1157_1268_Open_Image.style.display='inline'; Codehighlighter1_1157_1268_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(ch,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Query</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1157_1268_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1157_1268_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">as</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">bs);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;sum(bs)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;sum(</span><span style="COLOR: #0000ff">as</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">));<br><img id=Codehighlighter1_1297_1381_Open_Image onclick="this.style.display='none'; Codehighlighter1_1297_1381_Open_Text.style.display='none'; Codehighlighter1_1297_1381_Closed_Image.style.display='inline'; Codehighlighter1_1297_1381_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1297_1381_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1297_1381_Closed_Text.style.display='none'; Codehighlighter1_1297_1381_Open_Image.style.display='inline'; Codehighlighter1_1297_1381_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(ch,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Add</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1297_1381_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1297_1381_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">as</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">bs);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">,&nbsp;bs);<br><img id=Codehighlighter1_1411_1496_Open_Image onclick="this.style.display='none'; Codehighlighter1_1411_1496_Open_Text.style.display='none'; Codehighlighter1_1411_1496_Closed_Image.style.display='inline'; Codehighlighter1_1411_1496_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1411_1496_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1411_1496_Closed_Text.style.display='none'; Codehighlighter1_1411_1496_Open_Image.style.display='inline'; Codehighlighter1_1411_1496_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(ch,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Sub</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1411_1496_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1411_1496_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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: #0000ff">as</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">bs);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add(</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">bs);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-07 18:04 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/07/143635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2892 Tunnel Warfare</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/07/143602.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 07 Apr 2011 04:31:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/07/143602.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143602.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/07/143602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143602.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143602.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=2892/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出M(M&nbsp;&lt;=&nbsp;50000)组操作，每组操作的形式如下：1&nbsp;D&nbsp;x:&nbsp;将第x个村庄摧毁2&nbsp;Q&nbsp;x:&nbsp;询问和第x个村庄直接或者间接连接的村庄数目3&nbsp;R:&nbsp;...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/07/143602.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-07 12:31 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/07/143602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3667 Hotel</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/05/143422.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Mon, 04 Apr 2011 16:54:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/05/143422.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143422.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/05/143422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143422.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143422.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=3667/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出M(M&nbsp;&lt;=&nbsp;50000)组操作，每组操作的形式如下：1&nbsp;D:&nbsp;询问是否有长度为D的连续区间，如果存在输出最左边的，否则输出0，并且将这块连续的区间占据。2&nbsp;X&nbsp;D:将从X开始的连续D块空间...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/05/143422.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-05 00:54 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/05/143422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 3373 Point</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/04/143416.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Mon, 04 Apr 2011 13:54:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/04/143416.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143416.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/04/143416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143416.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143416.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=3706/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给定N(N&nbsp;&lt;=&nbsp;100000)个点，要求找到任意一个点的最近点，点的距离定义如下：Distance&nbsp;(A,&nbsp;B)&nbsp;=&nbsp;max&nbsp;(|Ax&nbsp;&#...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/04/143416.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-04 21:54 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/04/143416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 1823 Luck and Love</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143374.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 14:17:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143374.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143374.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143374.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143374.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=1823/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;二维区间求最大值。解法：二维线段树&nbsp;或者&nbsp;二维RMQ思路：&nbsp;&nbsp;&nbsp;&nbsp;一维线段树是一颗完全二叉树，那么二维线段树无疑就是一颗完全四叉树，换言之，每个结点有四个儿子，这里为了...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/03/143374.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 22:17 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 1177 Picture</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143363.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 13:13:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143363.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143363.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143363.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143363.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143363.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=1177/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给定N(N&nbsp;&lt;=&nbsp;5000)个矩形纸片，求它们重叠后外围轮廓的周长。解法：线段树思路：&nbsp;&nbsp;&nbsp;&nbsp;矩形面积并的变形，其实只需要修改Update函数即可，在线段树的结点中保存一个nCover域，表示当...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/03/143363.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143363.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 21:13 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143363.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3277 City Horizon</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143355.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 11:09:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143355.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143355.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143355.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143355.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=3277/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给定N(N&nbsp;&lt;=&nbsp;40000)个矩形，求它们的面积并。解法：离散化+线段树思路：&nbsp;&nbsp;&nbsp;&nbsp;矩形面积并的nlog(n)经典算法。首先我们将每个矩形的纵向边投影到Y轴上，这样就可以把矩形的纵向边看成一...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/03/143355.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 19:09 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 2795 Billboard</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143352.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 10:32:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143352.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143352.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143352.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143352.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143352.html</trackback:ping><description><![CDATA[<strong>题目链接：</strong><a href="http://acm.hdu.edu.cn/showproblem.php?pid=2795">http://acm.hdu.edu.cn/showproblem.php?pid=2795</a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_284_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_284_Open_Text.style.display='none'; Codehighlighter1_0_284_Closed_Image.style.display='inline'; Codehighlighter1_0_284_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_284_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_284_Closed_Text.style.display='none'; Codehighlighter1_0_284_Open_Image.style.display='inline'; Codehighlighter1_0_284_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_284_Closed_Text>/**/</span><span id=Codehighlighter1_0_284_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;对于w*h(w&nbsp;&lt;=&nbsp;10^9,&nbsp;h&nbsp;&lt;=&nbsp;10^9&nbsp;)的一块区域，连续摆放1*wi的木板，木板不能<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">旋转，如果能放下就选择最靠上的位置摆放，并且输出行号，如果找不到直接输出-1。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">解法：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">线段树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;将h这一维映射到线段树的区间，w这一维则对应区间点上的最大值，每次询问时<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">做一次插入操作，如果当前访问的结点的最大值小于给定值，直接返回-1。否则，左<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">子树的最大值大于当前值，那么访问左子树，小于则访问右子树，直到叶子结点。如<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">果成功找到，说明给定值小于叶子结点的值，将叶子结点的值减去给定值，然后递归<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">更新内部结点的最值。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;200010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_363_392_Open_Image onclick="this.style.display='none'; Codehighlighter1_363_392_Open_Text.style.display='none'; Codehighlighter1_363_392_Closed_Image.style.display='inline'; Codehighlighter1_363_392_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_363_392_Closed_Image onclick="this.style.display='none'; Codehighlighter1_363_392_Closed_Text.style.display='none'; Codehighlighter1_363_392_Open_Image.style.display='inline'; Codehighlighter1_363_392_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Tree&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_363_392_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_363_392_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&nbsp;l,&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">T[maxn</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;h,&nbsp;w,&nbsp;n;<br><img id=Codehighlighter1_450_610_Open_Image onclick="this.style.display='none'; Codehighlighter1_450_610_Open_Text.style.display='none'; Codehighlighter1_450_610_Closed_Image.style.display='inline'; Codehighlighter1_450_610_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_450_610_Closed_Image onclick="this.style.display='none'; Codehighlighter1_450_610_Closed_Text.style.display='none'; Codehighlighter1_450_610_Open_Image.style.display='inline'; Codehighlighter1_450_610_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Build(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;p,&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_450_610_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_450_610_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[p].root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;p;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[p].l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;l;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[p].r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[p].Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;w;<br><img id=Codehighlighter1_521_535_Open_Image onclick="this.style.display='none'; Codehighlighter1_521_535_Open_Text.style.display='none'; Codehighlighter1_521_535_Closed_Image.style.display='inline'; Codehighlighter1_521_535_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_521_535_Closed_Image onclick="this.style.display='none'; Codehighlighter1_521_535_Closed_Text.style.display='none'; Codehighlighter1_521_535_Open_Image.style.display='inline'; Codehighlighter1_521_535_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_521_535_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_521_535_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Build(p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;l,&nbsp;mid);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Build(p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;r);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_636_661_Open_Image onclick="this.style.display='none'; Codehighlighter1_636_661_Open_Text.style.display='none'; Codehighlighter1_636_661_Closed_Image.style.display='inline'; Codehighlighter1_636_661_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_636_661_Closed_Image onclick="this.style.display='none'; Codehighlighter1_636_661_Closed_Text.style.display='none'; Codehighlighter1_636_661_Open_Image.style.display='inline'; Codehighlighter1_636_661_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MMax(</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="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_636_661_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_636_661_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;a&nbsp;:&nbsp;b;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_691_1002_Open_Image onclick="this.style.display='none'; Codehighlighter1_691_1002_Open_Text.style.display='none'; Codehighlighter1_691_1002_Closed_Image.style.display='inline'; Codehighlighter1_691_1002_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_691_1002_Closed_Image onclick="this.style.display='none'; Codehighlighter1_691_1002_Closed_Text.style.display='none'; Codehighlighter1_691_1002_Open_Image.style.display='inline'; Codehighlighter1_691_1002_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;p,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_691_1002_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_691_1002_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_715_789_Open_Image onclick="this.style.display='none'; Codehighlighter1_715_789_Open_Text.style.display='none'; Codehighlighter1_715_789_Closed_Image.style.display='inline'; Codehighlighter1_715_789_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_715_789_Closed_Image onclick="this.style.display='none'; Codehighlighter1_715_789_Closed_Text.style.display='none'; Codehighlighter1_715_789_Open_Image.style.display='inline'; Codehighlighter1_715_789_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(T[p].l&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;T[p].r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_715_789_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_715_789_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(T[p].Max&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;val)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[p].Max&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;val;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;T[p].l;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_813_983_Open_Image onclick="this.style.display='none'; Codehighlighter1_813_983_Open_Text.style.display='none'; Codehighlighter1_813_983_Closed_Image.style.display='inline'; Codehighlighter1_813_983_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_813_983_Closed_Image onclick="this.style.display='none'; Codehighlighter1_813_983_Closed_Text.style.display='none'; Codehighlighter1_813_983_Open_Image.style.display='inline'; Codehighlighter1_813_983_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(val&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;T[p].Max)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_813_983_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_813_983_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_853_883_Open_Image onclick="this.style.display='none'; Codehighlighter1_853_883_Open_Text.style.display='none'; Codehighlighter1_853_883_Closed_Image.style.display='inline'; Codehighlighter1_853_883_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_853_883_Closed_Image onclick="this.style.display='none'; Codehighlighter1_853_883_Closed_Text.style.display='none'; Codehighlighter1_853_883_Open_Image.style.display='inline'; Codehighlighter1_853_883_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(val&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;T[p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].Max)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_853_883_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_853_883_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Insert(p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;val);<br><img id=Codehighlighter1_889_921_Open_Image onclick="this.style.display='none'; Codehighlighter1_889_921_Open_Text.style.display='none'; Codehighlighter1_889_921_Closed_Image.style.display='inline'; Codehighlighter1_889_921_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_889_921_Closed_Image onclick="this.style.display='none'; Codehighlighter1_889_921_Closed_Text.style.display='none'; Codehighlighter1_889_921_Open_Image.style.display='inline'; Codehighlighter1_889_921_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_889_921_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_889_921_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Insert(p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[p].Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MMax(T[p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].Max,&nbsp;T[p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;x;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1016_1218_Open_Image onclick="this.style.display='none'; Codehighlighter1_1016_1218_Open_Text.style.display='none'; Codehighlighter1_1016_1218_Closed_Image.style.display='inline'; Codehighlighter1_1016_1218_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1016_1218_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1016_1218_Closed_Text.style.display='none'; Codehighlighter1_1016_1218_Open_Image.style.display='inline'; Codehighlighter1_1016_1218_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1016_1218_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1016_1218_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,&nbsp;X;<br><img id=Codehighlighter1_1074_1205_Open_Image onclick="this.style.display='none'; Codehighlighter1_1074_1205_Open_Text.style.display='none'; Codehighlighter1_1074_1205_Closed_Image.style.display='inline'; Codehighlighter1_1074_1205_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1074_1205_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1074_1205_Closed_Text.style.display='none'; Codehighlighter1_1074_1205_Open_Image.style.display='inline'; Codehighlighter1_1074_1205_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">h,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">w,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1074_1205_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1074_1205_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(h&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;n)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;n;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;h);<br><img id=Codehighlighter1_1142_1202_Open_Image onclick="this.style.display='none'; Codehighlighter1_1142_1202_Open_Text.style.display='none'; Codehighlighter1_1142_1202_Closed_Image.style.display='inline'; Codehighlighter1_1142_1202_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1142_1202_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1142_1202_Closed_Text.style.display='none'; Codehighlighter1_1142_1202_Open_Image.style.display='inline'; Codehighlighter1_1142_1202_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1142_1202_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1142_1202_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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">X);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;Insert(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;X)&nbsp;);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143352.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 18:32 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143352.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 1436 Horizontally Visible Segments</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143350.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 09:34:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143350.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143350.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143350.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143350.html</trackback:ping><description><![CDATA[<div style="background-color: #ffffff; font-family: 微软雅黑;">题目链接：<a href="http://poj.org/problem?id=1436" style="cursor: pointer; color: #1d58d1; font-family: Arial;">http://poj.org/problem?id=1436</a></div><div style="background-color: #ffffff; font-family: 微软雅黑;">题目大意：</div><div style="background-color: #ffffff; font-family: 微软雅黑;">&nbsp; &nbsp; &nbsp; &nbsp;给出N(N&nbsp;&lt;=&nbsp;8000)条垂直线段，如果两条线段在水平方向上连一条线之后不和其他任<span style="background-color: inherit; line-height: 1.5;">何垂直线段相交，那么我们称这两条线段水平可见，如果三条垂直线段两两水平可见</span><span style="background-color: inherit; line-height: 1.5;">，则称其为一个三角，问着N条线段能组成多少三角。</span></div><div style="background-color: #ffffff; font-family: 微软雅黑;"><span style="background-color: inherit; line-height: 1.5;">题目分析：</span></div><div style="background-color: #ffffff; font-family: 微软雅黑;"><div style="background-color: inherit;">&nbsp; &nbsp; &nbsp; &nbsp; 将垂直线段映射到Y轴上，这个问题就转变成了线段树的区间覆盖问题，需要注<span style="background-color: inherit; line-height: 1.5;">意的是如果线段的情况如下图所示：</span></div><div style="background-color: inherit;">|&nbsp;|&nbsp;|</div><div style="background-color: inherit;">|&nbsp;&nbsp;&nbsp;|</div><div style="background-color: inherit;">|&nbsp;|&nbsp;|</div><div style="background-color: inherit;"><span style="background-color: inherit; line-height: 1.5;">|</span></div><div style="background-color: inherit;">123</div><div style="background-color: inherit;">&nbsp; &nbsp; &nbsp; 1和3之间仍是水平可见的，但是点映射的时候可能会忽视掉，如果&#8220;中空&#8221;的那一段<span style="background-color: inherit; line-height: 1.5;">也有值比如0.5就不会出现这种问题了，所以我们只需要将所有y坐标乘2即可。</span></div><div style="background-color: inherit;">&nbsp; &nbsp; &nbsp; &nbsp;接下来的事情就是线段树的区间覆盖了，在线段树结点中维护一个Color域，用于<span style="background-color: inherit; line-height: 1.5;">表示当前结点的线段颜色，如果有多种颜色，则标记为-1，每次插入操作的时候，如果</span><span style="background-color: inherit; line-height: 1.5;">插入的线段完全覆盖了当前区间，那么判断Color域是否为-1，如果不是-1的话，说明</span><span style="background-color: inherit; line-height: 1.5;">当前线段的颜色必定只有一种，直接覆盖后改变Color域，否则继续递归左右子树。并</span><span style="background-color: inherit; line-height: 1.5;">且将</span><span style="line-height: 1.5;">Color</span><span style="background-color: inherit; line-height: 1.5;">域信息传递给左右儿子，在递归结束的时候记得将左右子树的Color域进行一</span><span style="background-color: inherit; line-height: 1.5;">次判断，如果两者的Color域相同，那么父亲的Color域就是子树的Color域，这一步很</span><span style="background-color: inherit; line-height: 1.5;">关键，可以将子树收缩，以免下次访问的时候不用递归太深。<br />&nbsp; &nbsp; &nbsp; 在每次线段覆盖之前先进行询问，将有关系的两条线段建立单向边，所有线段覆盖完毕后进行一次O(n^3)的扫描。<br /><br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />lazy思想<br />&nbsp;&nbsp;&nbsp;&nbsp;染色模型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;适合颜色数目较少(64以内)的区间染色问题。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具体操作：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、对某个连续区间进行染色。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、询问某个连续区间的颜色情况（种类、数目等等）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;适用题型：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poj&nbsp;2777&nbsp;Count&nbsp;Color<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdu&nbsp;5023&nbsp;A&nbsp;Corrupt&nbsp;Mayor's&nbsp;Performance&nbsp;Art<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;结点存储<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;颜色值的位或colorBit：每个颜色用2的幂来表示，颜色值表示分别为1、2、4、8<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />，该区间有哪些颜色就可以用他们的或来表示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;延迟标记lazy：该段区间完全被染色成了lazy这种颜色，这里的lazy要么是2的幂，要么是0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口说明<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;giveLazyToSon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传递延迟标记给两个子结点（调用子结点的updateByValue，并且lazy重置）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateByValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过某个颜色值更新当前结点信息（更新colorBit、lazy）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateFromSon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过两个子结点更新当前结点信息（更新colorBit）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergeQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;询问时用于对分割后的子结点进行合并用，不同情况实现不同<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用说明<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;建树：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用静态函数&nbsp;&nbsp;&nbsp;treeNode::segtree_build(1,&nbsp;1,&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;插入([x,&nbsp;y],&nbsp;val)：&nbsp;调用静态函数&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(1,&nbsp;1,&nbsp;n,&nbsp;x,&nbsp;y,&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;询问([x,&nbsp;y]):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用静态函数&nbsp;&nbsp;&nbsp;treeNode::segtree_query(1,&nbsp;1,&nbsp;n,&nbsp;x,&nbsp;y,&nbsp;ans);<br /><br /></span><span style="color: #008000; ">*/</span>&nbsp;<br />#include&nbsp;&lt;iostream&gt;<br />#include&nbsp;&lt;algorithm&gt;<br />#include&nbsp;&lt;cstdio&gt;<br />#include&nbsp;&lt;vector&gt;<br /><span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br /><br /><span style="color: #0000FF; ">#define</span>&nbsp;MAXN&nbsp;131072<br />typedef&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ValueType;<br /><br /><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;返回[l,&nbsp;r]和[x,&nbsp;y]两条线段是否相交</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">bool</span>&nbsp;is_intersect(<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;!(r&nbsp;&lt;&nbsp;x&nbsp;||&nbsp;l&nbsp;&gt;&nbsp;y);<br />}<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;返回[x,&nbsp;y]是否完全包含[l,&nbsp;r]</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">bool</span>&nbsp;is_contain(<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;x&nbsp;&lt;=&nbsp;l&nbsp;&amp;&amp;&nbsp;r&nbsp;&lt;=&nbsp;y;<br />}<br /><br /><span style="color: #0000FF; ">struct</span>&nbsp;treeNode&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;ValueType&nbsp;lazy;<br />&nbsp;&nbsp;&nbsp;&nbsp;ValueType&nbsp;colorBit;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;pid;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;len;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;treeNode()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(-1,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;reset(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;_len)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid&nbsp;=&nbsp;p;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;_len;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;lson()&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pid&nbsp;&lt;&lt;&nbsp;1;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;rson()&nbsp;{&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;pid&lt;&lt;1|1;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;updateByValue(ValueType&nbsp;_val);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;giveLazyToSon();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;updateFromSon();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;询问的时候将结点合并后计入答案</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;mergeQuery(<span style="color: #0000FF; ">int</span>&nbsp;p);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;建树&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;segtree_build(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;插入线段[x,&nbsp;y]到[l,&nbsp;r]</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;segtree_insert(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y,&nbsp;ValueType&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;区间询问[x,&nbsp;y]上的信息</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;segtree_query(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;id);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />};<br /><br /><span style="color: #008000; ">/*</span><span style="color: #008000; ">&nbsp;全局变量&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;nodes[MAXN*2]&nbsp;存储所有静态线段树结点(动态开内存太费时间)<br />&nbsp;&nbsp;&nbsp;&nbsp;totalNodes&nbsp;&nbsp;&nbsp;&nbsp;存储结点数目<br /></span><span style="color: #008000; ">*/</span><br />treeNode&nbsp;nodes[MAXN*2];<br />vector&nbsp;&lt;<span style="color: #0000FF; ">int</span>&gt;&nbsp;adj[MAXN];<br /><span style="color: #0000FF; ">int</span>&nbsp;adjHash[MAXN],&nbsp;adjHashCount&nbsp;=&nbsp;0;<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::updateByValue(ValueType&nbsp;_val)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;=&nbsp;_val;<br />&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;_val;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::giveLazyToSon()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(lazy)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[&nbsp;lson()&nbsp;].updateByValue(lazy);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[&nbsp;rson()&nbsp;].updateByValue(lazy);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::updateFromSon()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;lc&nbsp;=&nbsp;nodes[&nbsp;lson()&nbsp;].colorBit;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;rc&nbsp;=&nbsp;nodes[&nbsp;rson()&nbsp;].colorBit;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(lc&nbsp;==&nbsp;-1&nbsp;||&nbsp;rc&nbsp;==&nbsp;-1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;(lc&nbsp;==&nbsp;rc)&nbsp;?&nbsp;lc&nbsp;:&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::mergeQuery(<span style="color: #0000FF; ">int</span>&nbsp;p)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;|=&nbsp;nodes[p].colorBit;<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::segtree_build(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;创建线段树结点的时候只需要知道该线段树结点管辖区间的长度，区间端点不用存，可以在递归的时候作为函数传参</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].reset(p,&nbsp;r-l+1);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(l&nbsp;&lt;&nbsp;r)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;mid&nbsp;=&nbsp;(l&nbsp;+&nbsp;r)&nbsp;&gt;&gt;&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;递归创建左右儿子结点</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_build(p&lt;&lt;1,&nbsp;l,&nbsp;mid);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_build(p&lt;&lt;1|1,&nbsp;mid+1,&nbsp;r);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateFromSon();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::segtree_insert(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y,&nbsp;ValueType&nbsp;val)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;!is_intersect(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;is_contain(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateByValue(val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].giveLazyToSon();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;mid&nbsp;=&nbsp;(l&nbsp;+&nbsp;r)&nbsp;&gt;&gt;&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(p&lt;&lt;1,&nbsp;l,&nbsp;mid,&nbsp;x,&nbsp;y,&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(p&lt;&lt;1|1,&nbsp;mid+1,&nbsp;r,&nbsp;x,&nbsp;y,&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateFromSon();<br />}<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;treeNode::segtree_query(<span style="color: #0000FF; ">int</span>&nbsp;p,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;l,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;r,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;x,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;id)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;!is_intersect(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;is_contain(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;preid&nbsp;=&nbsp;nodes[p].colorBit;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;preid&nbsp;!=&nbsp;-1&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;adjHash[&nbsp;preid&nbsp;]&nbsp;&lt;&nbsp;adjHashCount&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adj[&nbsp;preid&nbsp;].push_back(&nbsp;id&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adjHash[&nbsp;preid&nbsp;]&nbsp;=&nbsp;adjHashCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].giveLazyToSon();<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;mid&nbsp;=&nbsp;(l&nbsp;+&nbsp;r)&nbsp;&gt;&gt;&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_query(p&lt;&lt;1,&nbsp;l,&nbsp;mid,&nbsp;x,&nbsp;y,&nbsp;id);<br />&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_query(p&lt;&lt;1|1,&nbsp;mid+1,&nbsp;r,&nbsp;x,&nbsp;y,&nbsp;id);<br />&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateFromSon();<br />}&nbsp;<br /><br /><span style="color: #0000FF; ">struct</span>&nbsp;line&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;y1,&nbsp;y2,&nbsp;x;<br />}L[MAXN];<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;cmp(line&nbsp;a,&nbsp;line&nbsp;b)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;a.x&nbsp;&lt;&nbsp;b.x;<br />}<br /><br /><br /><span style="color: #0000FF; ">int</span>&nbsp;n&nbsp;=&nbsp;16001,&nbsp;m;<br /><span style="color: #0000FF; ">int</span>&nbsp;segHash[MAXN],&nbsp;segHashCount;<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i,&nbsp;j,&nbsp;k,&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&nbsp;&amp;t);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(&nbsp;t--&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&nbsp;&amp;m);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;m;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d&nbsp;%d&nbsp;%d",&nbsp;&amp;L[i].y1,&nbsp;&amp;L[i].y2,&nbsp;&amp;L[i].x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L[i].y1&nbsp;=&nbsp;L[i].y1&nbsp;*&nbsp;2&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;L[i].y2&nbsp;=&nbsp;L[i].y2&nbsp;*&nbsp;2&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adj[i+1].clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(L,&nbsp;L&nbsp;+&nbsp;m,&nbsp;cmp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_build(1,&nbsp;1,&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;m;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adjHashCount&nbsp;++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;color&nbsp;=&nbsp;i&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_query(1,&nbsp;1,&nbsp;n,&nbsp;L[i].y1,&nbsp;L[i].y2,&nbsp;color);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(1,&nbsp;1,&nbsp;n,&nbsp;L[i].y1,&nbsp;L[i].y2,&nbsp;color);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ans&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;m;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;u&nbsp;=&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;adj[u].size();&nbsp;j++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;v&nbsp;=&nbsp;adj[u][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segHashCount&nbsp;++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(k&nbsp;=&nbsp;0;&nbsp;k&nbsp;&lt;&nbsp;adj[v].size();&nbsp;k++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;segHash[&nbsp;adj[v][k]&nbsp;]&nbsp;=&nbsp;segHashCount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(k&nbsp;=&nbsp;0;&nbsp;k&nbsp;&lt;&nbsp;adj[u].size();&nbsp;k++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;segHash[&nbsp;adj[u][k]&nbsp;]&nbsp;==&nbsp;segHashCount&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",&nbsp;ans);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}</div></div></div><img src ="http://www.cppblog.com/menjitianya/aggbug/143350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 17:34 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2760 End of Windless Days</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143336.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 04:50:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143336.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143336.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143336.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143336.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=2760/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出N(N&nbsp;&lt;=&nbsp;500)个不透明矩形和它的高度，矩形上方有一盏灯，可以通过照射投影到地面上，不被矩形投影覆盖的就会照亮，问最后照亮的区域的面积。解法：离散化+线段树思路：&nbsp;&nbsp;&nbsp;&nbsp;如果我们知道每...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/03/143336.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 12:50 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 2665 Kth number</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143333.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 03:28:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143333.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143333.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143333.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143333.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=2665/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列，然后是一连串询问，询问数&lt;=&nbsp;100000，询问的格式是a,&nbsp;b,&nbsp;k，问[a,&nbsp;b]区间中的k小数。解法...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/03/143333.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 11:28 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2761 Feed the dogs</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143325.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sun, 03 Apr 2011 02:28:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143325.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143325.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143325.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143325.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=2761/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列，然后是一连串询问，询问数&lt;=&nbsp;50000，询问的格式是a,&nbsp;b,&nbsp;k，问[a,&nbsp;b]区间中的k小数。解法：二分+树状数组 或者 二分+归并...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/03/143325.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 10:28 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FZU 1608 Huge Mission</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/03/143319.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sat, 02 Apr 2011 16:05:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/03/143319.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143319.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/03/143319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143319.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143319.html</trackback:ping><description><![CDATA[<strong>题目链接：</strong><a href="http://acm.fzu.edu.cn/problem.php?pid=1608">http://acm.fzu.edu.cn/problem.php?pid=1608</a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_242_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_242_Open_Text.style.display='none'; Codehighlighter1_0_242_Closed_Image.style.display='inline'; Codehighlighter1_0_242_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_242_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_242_Closed_Text.style.display='none'; Codehighlighter1_0_242_Open_Image.style.display='inline'; Codehighlighter1_0_242_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_242_Closed_Text>/**/</span><span id=Codehighlighter1_0_242_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给定M个区间&nbsp;(1&nbsp;&lt;=&nbsp;M&nbsp;&lt;=&nbsp;500000)和这些区间上的权值，求最终并区间的最<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">大权值总和（某个区间不能被计算两次）。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">解法：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">线段树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;因为最后询问只有一次，而多次的插入操作，所以这个问题有个很简单的解<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">决办法，每次更新的时候只更新到区间完全覆盖的情况，这样的复杂度是log(n)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">的，而最后询问的时候来一次O(nlogn)的操作，一直查询到元区间，每次将当前<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">区间的最大值向下传递给两个儿子。统计时只要统计元区间的最值和即可。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;50010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_320_407_Open_Image onclick="this.style.display='none'; Codehighlighter1_320_407_Open_Text.style.display='none'; Codehighlighter1_320_407_Closed_Image.style.display='inline'; Codehighlighter1_320_407_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_320_407_Closed_Image onclick="this.style.display='none'; Codehighlighter1_320_407_Closed_Text.style.display='none'; Codehighlighter1_320_407_Open_Image.style.display='inline'; Codehighlighter1_320_407_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Tree&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_320_407_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_320_407_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&nbsp;l,&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CoverBy(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;lazy);<br><img id=Codehighlighter1_386_405_Open_Image onclick="this.style.display='none'; Codehighlighter1_386_405_Open_Text.style.display='none'; Codehighlighter1_386_405_Closed_Image.style.display='inline'; Codehighlighter1_386_405_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_386_405_Closed_Image onclick="this.style.display='none'; Codehighlighter1_386_405_Closed_Text.style.display='none'; Codehighlighter1_386_405_Open_Image.style.display='inline'; Codehighlighter1_386_405_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_386_405_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_386_405_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;l;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">T[maxn</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;m;<br><img id=Codehighlighter1_465_658_Open_Image onclick="this.style.display='none'; Codehighlighter1_465_658_Open_Text.style.display='none'; Codehighlighter1_465_658_Closed_Image.style.display='inline'; Codehighlighter1_465_658_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_465_658_Closed_Image onclick="this.style.display='none'; Codehighlighter1_465_658_Closed_Text.style.display='none'; Codehighlighter1_465_658_Open_Image.style.display='inline'; Codehighlighter1_465_658_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Build(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_465_658_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_465_658_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;root;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;l;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_565_579_Open_Image onclick="this.style.display='none'; Codehighlighter1_565_579_Open_Text.style.display='none'; Codehighlighter1_565_579_Closed_Image.style.display='inline'; Codehighlighter1_565_579_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_565_579_Closed_Image onclick="this.style.display='none'; Codehighlighter1_565_579_Closed_Text.style.display='none'; Codehighlighter1_565_579_Open_Image.style.display='inline'; Codehighlighter1_565_579_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</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;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_565_579_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_565_579_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Build(root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;l,&nbsp;mid);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Build(root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;mid,&nbsp;r);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_690_728_Open_Image onclick="this.style.display='none'; Codehighlighter1_690_728_Open_Text.style.display='none'; Codehighlighter1_690_728_Closed_Image.style.display='inline'; Codehighlighter1_690_728_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_690_728_Closed_Image onclick="this.style.display='none'; Codehighlighter1_690_728_Closed_Text.style.display='none'; Codehighlighter1_690_728_Open_Image.style.display='inline'; Codehighlighter1_690_728_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Tree::CoverBy(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;lazy)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_690_728_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_690_728_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_708_726_Open_Image onclick="this.style.display='none'; Codehighlighter1_708_726_Open_Text.style.display='none'; Codehighlighter1_708_726_Closed_Image.style.display='inline'; Codehighlighter1_708_726_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_708_726_Closed_Image onclick="this.style.display='none'; Codehighlighter1_708_726_Closed_Text.style.display='none'; Codehighlighter1_708_726_Open_Image.style.display='inline'; Codehighlighter1_708_726_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(lazy&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;Max)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_708_726_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_708_726_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;lazy;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_776_970_Open_Image onclick="this.style.display='none'; Codehighlighter1_776_970_Open_Text.style.display='none'; Codehighlighter1_776_970_Closed_Image.style.display='inline'; Codehighlighter1_776_970_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_776_970_Closed_Image onclick="this.style.display='none'; Codehighlighter1_776_970_Closed_Text.style.display='none'; Codehighlighter1_776_970_Open_Image.style.display='inline'; Codehighlighter1_776_970_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&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;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_776_970_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_776_970_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_816_830_Open_Image onclick="this.style.display='none'; Codehighlighter1_816_830_Open_Text.style.display='none'; Codehighlighter1_816_830_Closed_Image.style.display='inline'; Codehighlighter1_816_830_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_816_830_Closed_Image onclick="this.style.display='none'; Codehighlighter1_816_830_Closed_Text.style.display='none'; Codehighlighter1_816_830_Open_Image.style.display='inline'; Codehighlighter1_816_830_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;T[root].l)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_816_830_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_816_830_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_870_908_Open_Image onclick="this.style.display='none'; Codehighlighter1_870_908_Open_Text.style.display='none'; Codehighlighter1_870_908_Closed_Image.style.display='inline'; Codehighlighter1_870_908_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_870_908_Closed_Image onclick="this.style.display='none'; Codehighlighter1_870_908_Closed_Text.style.display='none'; Codehighlighter1_870_908_Open_Image.style.display='inline'; Codehighlighter1_870_908_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;T[root].l&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_870_908_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_870_908_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].CoverBy(val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;l,&nbsp;r,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;l,&nbsp;r,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1007_1207_Open_Image onclick="this.style.display='none'; Codehighlighter1_1007_1207_Open_Text.style.display='none'; Codehighlighter1_1007_1207_Closed_Image.style.display='inline'; Codehighlighter1_1007_1207_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1007_1207_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1007_1207_Closed_Text.style.display='none'; Codehighlighter1_1007_1207_Open_Image.style.display='inline'; Codehighlighter1_1007_1207_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Query(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1007_1207_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1007_1207_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_1025_1050_Open_Image onclick="this.style.display='none'; Codehighlighter1_1025_1050_Open_Text.style.display='none'; Codehighlighter1_1025_1050_Closed_Image.style.display='inline'; Codehighlighter1_1025_1050_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1025_1050_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1025_1050_Closed_Text.style.display='none'; Codehighlighter1_1025_1050_Open_Image.style.display='inline'; Codehighlighter1_1025_1050_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</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;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1025_1050_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1025_1050_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;T[root].Max;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].CoverBy(T[root].Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].CoverBy(T[root].Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;Query(root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;l,&nbsp;mid)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;Query(root</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;mid,&nbsp;r);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1221_1443_Open_Image onclick="this.style.display='none'; Codehighlighter1_1221_1443_Open_Text.style.display='none'; Codehighlighter1_1221_1443_Closed_Image.style.display='inline'; Codehighlighter1_1221_1443_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1221_1443_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1221_1443_Closed_Text.style.display='none'; Codehighlighter1_1221_1443_Open_Image.style.display='inline'; Codehighlighter1_1221_1443_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1221_1443_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1221_1443_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img id=Codehighlighter1_1269_1429_Open_Image onclick="this.style.display='none'; Codehighlighter1_1269_1429_Open_Text.style.display='none'; Codehighlighter1_1269_1429_Closed_Image.style.display='inline'; Codehighlighter1_1269_1429_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1269_1429_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1269_1429_Closed_Text.style.display='none'; Codehighlighter1_1269_1429_Open_Image.style.display='inline'; Codehighlighter1_1269_1429_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%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">m)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1269_1429_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1269_1429_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;n);<br><img id=Codehighlighter1_1314_1391_Open_Image onclick="this.style.display='none'; Codehighlighter1_1314_1391_Open_Text.style.display='none'; Codehighlighter1_1314_1391_Closed_Image.style.display='inline'; Codehighlighter1_1314_1391_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1314_1391_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1314_1391_Closed_Text.style.display='none'; Codehighlighter1_1314_1391_Open_Image.style.display='inline'; Codehighlighter1_1314_1391_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;m;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1314_1391_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1314_1391_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x,&nbsp;y,&nbsp;z;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">x,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">y,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">z);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;x,&nbsp;y,&nbsp;z);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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;Query(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;n));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-03 00:05 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/03/143319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 3225 Help with Intervals</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/02/143316.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sat, 02 Apr 2011 14:50:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/02/143316.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143316.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/02/143316.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143316.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143316.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=3225/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;刚开始是一个[0,&nbsp;65535]的集合，要求通过一些集合操作，最后输出最小的的集合。如果有多个，按结束坐标最小的依次输出，集合操作包括：U&nbsp;T：S&nbsp;=&nbsp;S&nbsp;并&nbsp;TI&nbsp;T：S&nbsp;=&n...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/02/143316.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-02 22:50 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/02/143316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 3397 Sequence operation</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/02/143265.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Sat, 02 Apr 2011 04:55:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/02/143265.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143265.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/02/143265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143265.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143265.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=3397/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列，然后是五种操作：插入操作:0&nbsp;a&nbsp;b&nbsp;将所有[a,&nbsp;b]区间内的数改成01&nbsp;a&nbsp;b&nbsp...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/02/143265.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-02 12:55 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/02/143265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZJU 2301 Color the Ball</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/01/143226.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Fri, 01 Apr 2011 11:16:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/01/143226.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143226.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/01/143226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143226.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143226.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2301/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出N(N&nbsp;&lt;=&nbsp;2000)组操作，每组操作的形式如下：A&nbsp;B&nbsp;C:&nbsp;将[A,B]区间内的颜色染成C，C可以是白色或者黑色，序列开始是...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/01/143226.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-01 19:16 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/01/143226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 1698 Just a Hook</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/01/143207.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Fri, 01 Apr 2011 08:03:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/01/143207.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143207.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/01/143207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143207.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143207.html</trackback:ping><description><![CDATA[<strong>题目链接：</strong><a href="http://acm.hdu.edu.cn/showproblem.php?pid=1698">http://acm.hdu.edu.cn/showproblem.php?pid=1698</a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_397_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_397_Open_Text.style.display='none'; Codehighlighter1_0_397_Closed_Image.style.display='inline'; Codehighlighter1_0_397_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_397_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_397_Closed_Text.style.display='none'; Codehighlighter1_0_397_Open_Image.style.display='inline'; Codehighlighter1_0_397_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_397_Closed_Text>/**/</span><span id=Codehighlighter1_0_397_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给定一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列Si，紧接着Q(1&nbsp;&lt;=&nbsp;Q&nbsp;&lt;=&nbsp;100000)条操作<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">，每条操作将[A,&nbsp;B]的区间颜色改成C（权值为C），颜色C最多三种，问最后所有数<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">的权值总和。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">解法：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">线段树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;线段树的区间修改，还是利用lazy思想。线段树结点维护一个Color域和一个<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">Count域，Color要么是-1表示当前结点有多种颜色，要么是颜色的编号，每次插入<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">到完全覆盖时在该结点的Color域上打上一个标记，表示当前颜色，计算当前结点的<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">Count值。如果当前结点的颜色和插入的颜色相同，说明不必再往下插入了。如果没<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">有完全覆盖，并且当前结点的颜色单一，那么直接将父亲的值传递给而两个儿子，<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">还是同样的道理，之前的儿子如果有lazy标记，肯定是在当前标记之前，所以直接覆<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">盖即可。最后通过两个儿子的权值计算当前子树的权值。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;100010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MULTIPLE_COLOR&nbsp;-1</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_502_727_Open_Image onclick="this.style.display='none'; Codehighlighter1_502_727_Open_Text.style.display='none'; Codehighlighter1_502_727_Closed_Image.style.display='inline'; Codehighlighter1_502_727_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_502_727_Closed_Image onclick="this.style.display='none'; Codehighlighter1_502_727_Closed_Text.style.display='none'; Codehighlighter1_502_727_Open_Image.style.display='inline'; Codehighlighter1_502_727_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Tree&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_502_727_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_502_727_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nColor,&nbsp;nCount;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;son[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;l,&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_564_627_Open_Image onclick="this.style.display='none'; Codehighlighter1_564_627_Open_Text.style.display='none'; Codehighlighter1_564_627_Closed_Image.style.display='inline'; Codehighlighter1_564_627_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_564_627_Closed_Image onclick="this.style.display='none'; Codehighlighter1_564_627_Closed_Text.style.display='none'; Codehighlighter1_564_627_Open_Image.style.display='inline'; Codehighlighter1_564_627_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;clear()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_564_627_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_564_627_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;son[</span><span style="COLOR: #000000">1</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">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_641_664_Open_Image onclick="this.style.display='none'; Codehighlighter1_641_664_Open_Text.style.display='none'; Codehighlighter1_641_664_Closed_Image.style.display='inline'; Codehighlighter1_641_664_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_641_664_Closed_Image onclick="this.style.display='none'; Codehighlighter1_641_664_Closed_Text.style.display='none'; Codehighlighter1_641_664_Open_Image.style.display='inline'; Codehighlighter1_641_664_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_641_664_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_641_664_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;TranslateToSon();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;UpdateBy(Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ls,&nbsp;Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;rs);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">T[&nbsp;maxn</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;tot;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_786_892_Open_Image onclick="this.style.display='none'; Codehighlighter1_786_892_Open_Text.style.display='none'; Codehighlighter1_786_892_Closed_Image.style.display='inline'; Codehighlighter1_786_892_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_786_892_Closed_Image onclick="this.style.display='none'; Codehighlighter1_786_892_Closed_Text.style.display='none'; Codehighlighter1_786_892_Open_Image.style.display='inline'; Codehighlighter1_786_892_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetID(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;root,&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_786_892_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_786_892_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_804_876_Open_Image onclick="this.style.display='none'; Codehighlighter1_804_876_Open_Text.style.display='none'; Codehighlighter1_804_876_Closed_Image.style.display='inline'; Codehighlighter1_804_876_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_804_876_Closed_Image onclick="this.style.display='none'; Codehighlighter1_804_876_Closed_Text.style.display='none'; Codehighlighter1_804_876_Open_Image.style.display='inline'; Codehighlighter1_804_876_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(root&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_804_876_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_804_876_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tot</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;l;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].clear();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;root;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_923_1213_Open_Image onclick="this.style.display='none'; Codehighlighter1_923_1213_Open_Text.style.display='none'; Codehighlighter1_923_1213_Closed_Image.style.display='inline'; Codehighlighter1_923_1213_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_923_1213_Closed_Image onclick="this.style.display='none'; Codehighlighter1_923_1213_Closed_Text.style.display='none'; Codehighlighter1_923_1213_Open_Image.style.display='inline'; Codehighlighter1_923_1213_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Tree::TranslateToSon()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_923_1213_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_923_1213_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_955_1211_Open_Image onclick="this.style.display='none'; Codehighlighter1_955_1211_Open_Text.style.display='none'; Codehighlighter1_955_1211_Closed_Image.style.display='inline'; Codehighlighter1_955_1211_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_955_1211_Closed_Image onclick="this.style.display='none'; Codehighlighter1_955_1211_Closed_Text.style.display='none'; Codehighlighter1_955_1211_Open_Image.style.display='inline'; Codehighlighter1_955_1211_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nColor&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;MULTIPLE_COLOR)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_955_1211_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_955_1211_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i0&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GetID(son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;l,&nbsp;mid);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[i0].nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nColor;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[i0].nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nColor&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;T[i0].len();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;GetID(son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;r);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[i1].nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nColor;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[i1].nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nColor&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;T[i1].len();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MULTIPLE_COLOR;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1255_1386_Open_Image onclick="this.style.display='none'; Codehighlighter1_1255_1386_Open_Text.style.display='none'; Codehighlighter1_1255_1386_Closed_Image.style.display='inline'; Codehighlighter1_1255_1386_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1255_1386_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1255_1386_Closed_Text.style.display='none'; Codehighlighter1_1255_1386_Open_Image.style.display='inline'; Codehighlighter1_1255_1386_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Tree::UpdateBy(Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ls,&nbsp;Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;rs)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1255_1386_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1255_1386_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_1287_1313_Open_Image onclick="this.style.display='none'; Codehighlighter1_1287_1313_Open_Text.style.display='none'; Codehighlighter1_1287_1313_Closed_Image.style.display='inline'; Codehighlighter1_1287_1313_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1287_1313_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1287_1313_Closed_Text.style.display='none'; Codehighlighter1_1287_1313_Open_Image.style.display='inline'; Codehighlighter1_1287_1313_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ls</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">nColor&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;rs</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">nColor)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1287_1313_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1287_1313_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ls</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">nColor;<br><img id=Codehighlighter1_1319_1349_Open_Image onclick="this.style.display='none'; Codehighlighter1_1319_1349_Open_Text.style.display='none'; Codehighlighter1_1319_1349_Closed_Image.style.display='inline'; Codehighlighter1_1319_1349_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1319_1349_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1319_1349_Closed_Text.style.display='none'; Codehighlighter1_1319_1349_Open_Image.style.display='inline'; Codehighlighter1_1319_1349_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1319_1349_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1319_1349_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MULTIPLE_COLOR;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ls</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">nCount&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;rs</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">nCount;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1452_1861_Open_Image onclick="this.style.display='none'; Codehighlighter1_1452_1861_Open_Text.style.display='none'; Codehighlighter1_1452_1861_Closed_Image.style.display='inline'; Codehighlighter1_1452_1861_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1452_1861_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1452_1861_Closed_Text.style.display='none'; Codehighlighter1_1452_1861_Open_Image.style.display='inline'; Codehighlighter1_1452_1861_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;root,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nl,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nr,&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;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1452_1861_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1452_1861_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;nr&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;nl)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;GetID(root,&nbsp;l,&nbsp;r);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(T[root].nColor&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;val)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_1572_1648_Open_Image onclick="this.style.display='none'; Codehighlighter1_1572_1648_Open_Text.style.display='none'; Codehighlighter1_1572_1648_Closed_Image.style.display='inline'; Codehighlighter1_1572_1648_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1572_1648_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1572_1648_Closed_Text.style.display='none'; Codehighlighter1_1572_1648_Open_Image.style.display='inline'; Codehighlighter1_1572_1648_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nl&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;nr)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1572_1648_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1572_1648_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].nColor&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;val;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;val&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(r&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].TranslateToSon();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;nl,&nbsp;nr,&nbsp;l,&nbsp;mid,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;nl,&nbsp;nr,&nbsp;mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;r,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].UpdateBy(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T[&nbsp;T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;],&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T[&nbsp;T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;m;<br><img id=Codehighlighter1_1885_2228_Open_Image onclick="this.style.display='none'; Codehighlighter1_1885_2228_Open_Text.style.display='none'; Codehighlighter1_1885_2228_Closed_Image.style.display='inline'; Codehighlighter1_1885_2228_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1885_2228_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1885_2228_Closed_Text.style.display='none'; Codehighlighter1_1885_2228_Open_Image.style.display='inline'; Codehighlighter1_1885_2228_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1885_2228_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1885_2228_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;t;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Case&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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">t);<br><img id=Codehighlighter1_1940_2215_Open_Image onclick="this.style.display='none'; Codehighlighter1_1940_2215_Open_Text.style.display='none'; Codehighlighter1_1940_2215_Closed_Image.style.display='inline'; Codehighlighter1_1940_2215_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1940_2215_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1940_2215_Closed_Text.style.display='none'; Codehighlighter1_1940_2215_Open_Image.style.display='inline'; Codehighlighter1_1940_2215_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1940_2215_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1940_2215_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%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">m);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(root,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;n,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;n,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img id=Codehighlighter1_2040_2128_Open_Image onclick="this.style.display='none'; Codehighlighter1_2040_2128_Open_Text.style.display='none'; Codehighlighter1_2040_2128_Closed_Image.style.display='inline'; Codehighlighter1_2040_2128_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2040_2128_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2040_2128_Closed_Text.style.display='none'; Codehighlighter1_2040_2128_Open_Image.style.display='inline'; Codehighlighter1_2040_2128_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(m</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2040_2128_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2040_2128_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x,&nbsp;y,&nbsp;z;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%d&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">x,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">y,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">z);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(root,&nbsp;x,&nbsp;y,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;n,&nbsp;z);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Case&nbsp;%d:&nbsp;The&nbsp;total&nbsp;value&nbsp;of&nbsp;the&nbsp;hook&nbsp;is&nbsp;%d.\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;Case</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">,&nbsp;T[root].nCount);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-01 16:03 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/01/143207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 1754 I Hate It</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/01/143194.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Fri, 01 Apr 2011 06:17:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/01/143194.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143194.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/01/143194.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143194.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143194.html</trackback:ping><description><![CDATA[<p><strong>题目链接：</strong><a href="http://acm.hdu.edu.cn/showproblem.php?pid=1754">http://acm.hdu.edu.cn/showproblem.php?pid=1754</a></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_314_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_314_Open_Text.style.display='none'; Codehighlighter1_0_314_Closed_Image.style.display='inline'; Codehighlighter1_0_314_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_314_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_314_Closed_Text.style.display='none'; Codehighlighter1_0_314_Open_Image.style.display='inline'; Codehighlighter1_0_314_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_314_Closed_Text>/**/</span><span id=Codehighlighter1_0_314_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给定一个长度为N(N&nbsp;&lt;=&nbsp;200000)的数列Si，紧接着Q(1&nbsp;&lt;=&nbsp;Q&nbsp;&lt;=&nbsp;5000)条询问<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">或者修改，询问是询问区间的最大值，修改是修改某一个位置的值。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">解法：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">线段树&nbsp;或者&nbsp;RMQ<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;最裸的线段树区间最值，维护一颗完全二叉树，每个结点保存两个值，表示该结<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">点管理的区间的最大值和最小值，比如1号为根结点，管理区间[1,&nbsp;n]，每个结点p有<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">左儿子2*p和右儿子2*p+1，当区间两端点相同时为叶子结点，如果p管理的是[a,b]那<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">么2*p则管理区间[a,&nbsp;(a+b)/2]，2*p+1管理区间[(a+b)/2+1,&nbsp;b]，如此一来就可以通<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">过递归，将儿子的信息传递给父亲，直至根节点。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;inf&nbsp;-(1&lt;&lt;30)</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;200010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_415_544_Open_Image onclick="this.style.display='none'; Codehighlighter1_415_544_Open_Text.style.display='none'; Codehighlighter1_415_544_Closed_Image.style.display='inline'; Codehighlighter1_415_544_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_415_544_Closed_Image onclick="this.style.display='none'; Codehighlighter1_415_544_Closed_Text.style.display='none'; Codehighlighter1_415_544_Open_Image.style.display='inline'; Codehighlighter1_415_544_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Tree&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_415_544_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_415_544_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;son[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;l,&nbsp;r;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_466_506_Open_Image onclick="this.style.display='none'; Codehighlighter1_466_506_Open_Text.style.display='none'; Codehighlighter1_466_506_Closed_Image.style.display='inline'; Codehighlighter1_466_506_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_466_506_Closed_Image onclick="this.style.display='none'; Codehighlighter1_466_506_Closed_Text.style.display='none'; Codehighlighter1_466_506_Open_Image.style.display='inline'; Codehighlighter1_466_506_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;clear()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_466_506_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_466_506_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;son[</span><span style="COLOR: #000000">1</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">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;inf;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;UpdateBy(Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ls,&nbsp;Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;rs);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">T[&nbsp;maxn</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&nbsp;tot;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val[maxn];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_611_683_Open_Image onclick="this.style.display='none'; Codehighlighter1_611_683_Open_Text.style.display='none'; Codehighlighter1_611_683_Closed_Image.style.display='inline'; Codehighlighter1_611_683_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_611_683_Closed_Image onclick="this.style.display='none'; Codehighlighter1_611_683_Closed_Text.style.display='none'; Codehighlighter1_611_683_Open_Image.style.display='inline'; Codehighlighter1_611_683_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;GetID(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;root)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_611_683_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_611_683_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_629_667_Open_Image onclick="this.style.display='none'; Codehighlighter1_629_667_Open_Text.style.display='none'; Codehighlighter1_629_667_Closed_Image.style.display='inline'; Codehighlighter1_629_667_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_629_667_Closed_Image onclick="this.style.display='none'; Codehighlighter1_629_667_Closed_Text.style.display='none'; Codehighlighter1_629_667_Open_Image.style.display='inline'; Codehighlighter1_629_667_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(root&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_629_667_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_629_667_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tot</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].clear();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;root;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_708_733_Open_Image onclick="this.style.display='none'; Codehighlighter1_708_733_Open_Text.style.display='none'; Codehighlighter1_708_733_Closed_Image.style.display='inline'; Codehighlighter1_708_733_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_708_733_Closed_Image onclick="this.style.display='none'; Codehighlighter1_708_733_Closed_Text.style.display='none'; Codehighlighter1_708_733_Open_Image.style.display='inline'; Codehighlighter1_708_733_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mmax(</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="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_708_733_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_708_733_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;a&nbsp;:&nbsp;b;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_775_808_Open_Image onclick="this.style.display='none'; Codehighlighter1_775_808_Open_Text.style.display='none'; Codehighlighter1_775_808_Closed_Image.style.display='inline'; Codehighlighter1_775_808_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_775_808_Closed_Image onclick="this.style.display='none'; Codehighlighter1_775_808_Closed_Text.style.display='none'; Codehighlighter1_775_808_Open_Image.style.display='inline'; Codehighlighter1_775_808_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Tree::UpdateBy(Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;ls,&nbsp;Tree</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;rs)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_775_808_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_775_808_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;mmax(ls</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Max,&nbsp;rs</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_847_1096_Open_Image onclick="this.style.display='none'; Codehighlighter1_847_1096_Open_Text.style.display='none'; Codehighlighter1_847_1096_Closed_Image.style.display='inline'; Codehighlighter1_847_1096_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_847_1096_Closed_Image onclick="this.style.display='none'; Codehighlighter1_847_1096_Closed_Text.style.display='none'; Codehighlighter1_847_1096_Open_Image.style.display='inline'; Codehighlighter1_847_1096_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Build(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;root,&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_847_1096_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_847_1096_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;GetID(root);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;l;&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;r;<br><img id=Codehighlighter1_906_944_Open_Image onclick="this.style.display='none'; Codehighlighter1_906_944_Open_Text.style.display='none'; Codehighlighter1_906_944_Closed_Image.style.display='inline'; Codehighlighter1_906_944_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_906_944_Closed_Image onclick="this.style.display='none'; Codehighlighter1_906_944_Closed_Text.style.display='none'; Codehighlighter1_906_944_Open_Image.style.display='inline'; Codehighlighter1_906_944_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_906_944_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_906_944_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;val[l];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Build(T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;l,&nbsp;mid);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Build(T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;r);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].UpdateBy(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T[T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]],&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T[T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1139_1426_Open_Image onclick="this.style.display='none'; Codehighlighter1_1139_1426_Open_Text.style.display='none'; Codehighlighter1_1139_1426_Closed_Image.style.display='inline'; Codehighlighter1_1139_1426_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1139_1426_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1139_1426_Closed_Text.style.display='none'; Codehighlighter1_1139_1426_Open_Image.style.display='inline'; Codehighlighter1_1139_1426_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pos,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1139_1426_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1139_1426_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pos&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;pos&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;T[root].l)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img id=Codehighlighter1_1234_1294_Open_Image onclick="this.style.display='none'; Codehighlighter1_1234_1294_Open_Text.style.display='none'; Codehighlighter1_1234_1294_Closed_Image.style.display='inline'; Codehighlighter1_1234_1294_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1234_1294_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1234_1294_Closed_Text.style.display='none'; Codehighlighter1_1234_1294_Open_Image.style.display='inline'; Codehighlighter1_1234_1294_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pos&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;T[root].l&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;pos)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1234_1294_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1234_1294_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(val&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;T[root].Max)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;val;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;pos,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;pos,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].UpdateBy(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T[T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]],&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T[T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1465_1654_Open_Image onclick="this.style.display='none'; Codehighlighter1_1465_1654_Open_Text.style.display='none'; Codehighlighter1_1465_1654_Closed_Image.style.display='inline'; Codehighlighter1_1465_1654_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1465_1654_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1465_1654_Closed_Text.style.display='none'; Codehighlighter1_1465_1654_Open_Image.style.display='inline'; Codehighlighter1_1465_1654_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Query(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1465_1654_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1465_1654_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;T[root].l)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;inf;<br><img id=Codehighlighter1_1555_1580_Open_Image onclick="this.style.display='none'; Codehighlighter1_1555_1580_Open_Text.style.display='none'; Codehighlighter1_1555_1580_Closed_Image.style.display='inline'; Codehighlighter1_1555_1580_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1555_1580_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1555_1580_Closed_Text.style.display='none'; Codehighlighter1_1555_1580_Open_Image.style.display='inline'; Codehighlighter1_1555_1580_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;T[root].l&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;T[root].r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1555_1580_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1555_1580_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;T[root].Max;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;mmax(Query(T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;l,&nbsp;r),&nbsp;Query(T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;l,&nbsp;r));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;m;<br><img id=Codehighlighter1_1678_2039_Open_Image onclick="this.style.display='none'; Codehighlighter1_1678_2039_Open_Text.style.display='none'; Codehighlighter1_1678_2039_Closed_Image.style.display='inline'; Codehighlighter1_1678_2039_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1678_2039_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1678_2039_Closed_Text.style.display='none'; Codehighlighter1_1678_2039_Open_Image.style.display='inline'; Codehighlighter1_1678_2039_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1678_2039_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1678_2039_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img id=Codehighlighter1_1726_2026_Open_Image onclick="this.style.display='none'; Codehighlighter1_1726_2026_Open_Text.style.display='none'; Codehighlighter1_1726_2026_Closed_Image.style.display='inline'; Codehighlighter1_1726_2026_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1726_2026_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1726_2026_Closed_Text.style.display='none'; Codehighlighter1_1726_2026_Open_Image.style.display='inline'; Codehighlighter1_1726_2026_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%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">m)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1726_2026_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1726_2026_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_1754_1783_Open_Image onclick="this.style.display='none'; Codehighlighter1_1754_1783_Open_Text.style.display='none'; Codehighlighter1_1754_1783_Closed_Image.style.display='inline'; Codehighlighter1_1754_1783_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1754_1783_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1754_1783_Closed_Text.style.display='none'; Codehighlighter1_1754_1783_Open_Image.style.display='inline'; Codehighlighter1_1754_1783_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1754_1783_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1754_1783_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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">val[i]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build(root,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;n);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img id=Codehighlighter1_1846_2022_Open_Image onclick="this.style.display='none'; Codehighlighter1_1846_2022_Open_Text.style.display='none'; Codehighlighter1_1846_2022_Closed_Image.style.display='inline'; Codehighlighter1_1846_2022_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1846_2022_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1846_2022_Closed_Text.style.display='none'; Codehighlighter1_1846_2022_Open_Image.style.display='inline'; Codehighlighter1_1846_2022_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(m</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1846_2022_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1846_2022_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;A,&nbsp;B;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s&nbsp;%d&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;str,&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);<br><img id=Codehighlighter1_1938_1967_Open_Image onclick="this.style.display='none'; Codehighlighter1_1938_1967_Open_Text.style.display='none'; Codehighlighter1_1938_1967_Closed_Image.style.display='inline'; Codehighlighter1_1938_1967_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1938_1967_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1938_1967_Closed_Text.style.display='none'; Codehighlighter1_1938_1967_Open_Image.style.display='inline'; Codehighlighter1_1938_1967_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">strcmp(str,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">U</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1938_1967_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1938_1967_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(root,&nbsp;A,&nbsp;B);<br><img id=Codehighlighter1_1973_2018_Open_Image onclick="this.style.display='none'; Codehighlighter1_1973_2018_Open_Text.style.display='none'; Codehighlighter1_1973_2018_Closed_Image.style.display='inline'; Codehighlighter1_1973_2018_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1973_2018_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1973_2018_Closed_Text.style.display='none'; Codehighlighter1_1973_2018_Open_Image.style.display='inline'; Codehighlighter1_1973_2018_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1973_2018_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1973_2018_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;Query(root,&nbsp;A,&nbsp;B));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143194.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-01 14:17 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/01/143194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 3308 LCIS</title><link>http://www.cppblog.com/menjitianya/archive/2011/04/01/143170.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 31 Mar 2011 18:36:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/04/01/143170.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143170.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/04/01/143170.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143170.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143170.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=3308/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列，然后是两种操作：U&nbsp;A&nbsp;B:&nbsp;将第A个数替换为B&nbsp;(下标从零开始)Q&nbsp;A&nbsp;B:&nbsp;输...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/04/01/143170.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-04-01 02:36 <a href="http://www.cppblog.com/menjitianya/archive/2011/04/01/143170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2528 Mayor's posters</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/31/143158.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 31 Mar 2011 13:23:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/31/143158.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143158.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/31/143158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143158.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143158.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=2528/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给定N(N&nbsp;&lt;=&nbsp;10000)块木板，依次层叠，问最后能从上方俯视的木板的数量。解法：线段树（染色问题）思路：&nbsp;&nbsp;&nbsp;&nbsp;这题是pku&nbsp;2777的简化版，木板的数量最多10000种，每个结...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/03/31/143158.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-31 21:23 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/31/143158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2777 Count Color</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/31/143149.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 31 Mar 2011 11:49:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/31/143149.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143149.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/31/143149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143149.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143149.html</trackback:ping><description><![CDATA[<strong>题目链接：</strong><a href="http://poj.org/problem?id=2777">http://poj.org/problem?id=2777<br /></a><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />题意：<br />&nbsp;&nbsp;&nbsp;&nbsp;给定一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列Si，紧接着Q(Q&nbsp;&lt;=&nbsp;100000)条操作，操作<br />形式有两种：<br />1.&nbsp;"C&nbsp;A&nbsp;B&nbsp;C"&nbsp;将A到B的数都染成C这种颜色。&nbsp;<br />2.&nbsp;"P&nbsp;A&nbsp;B"&nbsp;输出A和B之间不同颜色的数目。<br /><br /><br />解法：<br />线段树（染色问题）<br /><br />思路：<br />&nbsp;&nbsp;&nbsp;&nbsp;一看到数据量就可以首先确定是线段树了，经典的区间染色问题，涉及到区间的<br />更新和询问，和pku&nbsp;3468&nbsp;类似，巧妙运用lazy思想。就是每次更新区间段的时候延迟<br />更新，只是在完全覆盖的区间打上一个lazy标记。这题的询问是求区间段中不同颜色的<br />数量，因为颜色数不多只有30种，可以巧妙运用二进制位运算，用一个int就可以表示<br />当前区间段的颜色情况。比如1001表示有两种颜色，如果左子树的当前颜色情况是101<br />，而右子树的颜色情况是011，那么父亲的颜色情况就是两者的位或，这样就可以避免<br />掉重复的情况。<br />&nbsp;&nbsp;&nbsp;&nbsp;再来谈谈lazy思想。做了这么多的线段树，应该总结一下，lazy是一个很经典的思<br />想。所谓lazy，就是懒惰，每次不想做太多，只要插入的区间完全覆盖了当前结点所管<br />理的区间就不再往下做了，在当前结点上打上一个lazy标记，然后直接返回。下次如果<br />遇到当前结点有lazy标记的话，直接传递给两个儿子，自己的标记清空。这样做肯定是<br />正确的。我们以染色为例，可以这样想，如果当前结点和它的子孙都有lazy标记的话，<br />必定是子孙的先标记，因为如果是自己先标记，那么在访问子孙的时候，必定会将自己<br />的标记下传给儿子，而自己的标记必定会清空，那么lazy标记也就不存在了。所以可以<br />肯定，当前的lazy标记必定覆盖了子孙的，所以直接下传即可，不需要做任何判断。当<br />然，这是染色问题，是直接赋值的，如果像pku&nbsp;3468那样，每次是区间加和，则传递标<br />记的时候不能简单的赋值，必须累加，这是显而易见的。<br /></span><span style="color: #008000; ">*/</span><br /><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />lazy思想<br />&nbsp;&nbsp;&nbsp;&nbsp;染色模型<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;适合颜色数目较少(64以内)的区间染色问题。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具体操作：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、对某个连续区间进行染色。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、询问某个连续区间的颜色情况（种类、数目等等）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;适用题型：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poj&nbsp;2777&nbsp;Count&nbsp;Color<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hdu&nbsp;5023&nbsp;A&nbsp;Corrupt&nbsp;Mayor's&nbsp;Performance&nbsp;Art<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;结点存储<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;颜色值的位或colorBit：每个颜色用2的幂来表示，颜色值表示分别为1、2、4、8<img src="http://www.cppblog.com/Images/dot.gif" alt="" />，该区间有哪些颜色就可以用他们的或来表示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;延迟标记lazy：该段区间完全被染色成了lazy这种颜色，这里的lazy要么是2的幂，要么是0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接口说明<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;giveLazyToSon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传递延迟标记给两个子结点（调用子结点的updateByValue，并且lazy重置）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateByValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过某个颜色值更新当前结点信息（更新colorBit、lazy）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateFromSon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过两个子结点更新当前结点信息（更新colorBit）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mergeQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;询问时用于对分割后的子结点进行合并用，不同情况实现不同<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用说明<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;建树：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用静态函数&nbsp;&nbsp;&nbsp;treeNode::segtree_build(1,&nbsp;1,&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;插入([x,&nbsp;y],&nbsp;val)：&nbsp;调用静态函数&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(1,&nbsp;1,&nbsp;n,&nbsp;x,&nbsp;y,&nbsp;val);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;询问([x,&nbsp;y]):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用静态函数&nbsp;&nbsp;&nbsp;treeNode::segtree_query(1,&nbsp;1,&nbsp;n,&nbsp;x,&nbsp;y,&nbsp;ans);<br /><br /></span><span style="color: #008000; ">*/</span>&nbsp;<br /><span style="font-family: Courier;">#include&nbsp;&lt;iostream&gt;</span><br /><br /><span style="color: #0000ff; font-family: Courier;">using</span>&nbsp;<span style="color: #0000ff; font-family: Courier;">namespace</span><span style="font-family: Courier;">&nbsp;std;</span><br /><br /><span style="color: #0000ff; font-family: Courier;">#define</span><span style="font-family: Courier;">&nbsp;MAXN&nbsp;131072</span><br /><span style="font-family: Courier;">typedef&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;ValueType;</span><br /><br /><br /><span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;返回[l,&nbsp;r]和[x,&nbsp;y]两条线段是否相交</span><span style="color: #008000;"><br /></span><span style="color: #0000ff; font-family: Courier;">bool</span><span style="font-family: Courier;">&nbsp;is_intersect(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;y)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;!(r&nbsp;&lt;&nbsp;x&nbsp;||&nbsp;l&nbsp;&gt;&nbsp;y);</span><br /><span style="font-family: Courier;">}</span><br /><span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;返回[x,&nbsp;y]是否完全包含[l,&nbsp;r]</span><span style="color: #008000;"><br /></span><span style="color: #0000ff; font-family: Courier;">bool</span><span style="font-family: Courier;">&nbsp;is_contain(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;y)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;x&nbsp;&lt;=&nbsp;l&nbsp;&amp;&amp;&nbsp;r&nbsp;&lt;=&nbsp;y;</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">struct</span><span style="font-family: Courier;">&nbsp;treeNode&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;ValueType&nbsp;lazy;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;ValueType&nbsp;colorBit;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;pid;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;len;</span><br /><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;treeNode()&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(-1,&nbsp;0);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;reset(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;_len)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid&nbsp;=&nbsp;p;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;0;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;=&nbsp;0;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;_len;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;lson()&nbsp;{&nbsp;</span><span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;pid&nbsp;&lt;&lt;&nbsp;1;&nbsp;}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;rson()&nbsp;{&nbsp;</span><span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;pid&lt;&lt;1|1;&nbsp;}</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;updateByValue(ValueType&nbsp;_val);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;giveLazyToSon();</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;updateFromSon();</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;询问的时候将结点合并后计入答案</span><span style="color: #008000;"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;mergeQuery(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p);</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;建树&nbsp;</span><span style="color: #008000;"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">static</span>&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;segtree_build(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;插入线段[x,&nbsp;y]到[l,&nbsp;r]</span><span style="color: #008000;"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">static</span>&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;segtree_insert(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;y,&nbsp;ValueType&nbsp;val);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;区间询问[x,&nbsp;y]上的信息</span><span style="color: #008000;"><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">static</span>&nbsp;<span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;segtree_query(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;y,&nbsp;treeNode&amp;&nbsp;ans);</span><br /><span style="font-family: Courier;">};</span><br /><br /><span style="color: #008000; font-family: Courier;">/*</span><span style="color: #008000; font-family: Courier;">&nbsp;全局变量&nbsp;<br /></span><span style="color: #008000; font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;nodes[MAXN*2]&nbsp;存储所有静态线段树结点(动态开内存太费时间)<br /></span><span style="color: #008000; font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;totalNodes&nbsp;&nbsp;&nbsp;&nbsp;存储结点数目<br /></span><span style="color: #008000; font-family: Courier;">*/</span><br /><span style="font-family: Courier;">treeNode&nbsp;nodes[MAXN*2];</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::updateByValue(ValueType&nbsp;_val)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;=&nbsp;_val;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;_val;</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::giveLazyToSon()&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(lazy)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[&nbsp;lson()&nbsp;].updateByValue(lazy);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[&nbsp;rson()&nbsp;].updateByValue(lazy);&nbsp;&nbsp;&nbsp;&nbsp;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lazy&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::updateFromSon()&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;=&nbsp;nodes[&nbsp;lson()&nbsp;].colorBit&nbsp;|&nbsp;nodes[&nbsp;rson()&nbsp;].colorBit;</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::mergeQuery(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;colorBit&nbsp;|=&nbsp;nodes[p].colorBit;</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::segtree_build(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;创建线段树结点的时候只需要知道该线段树结点管辖区间的长度，区间端点不用存，可以在递归的时候作为函数传参</span><span style="color: #008000;"><br /></span><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].reset(p,&nbsp;r-l+1);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">&nbsp;(l&nbsp;&lt;&nbsp;r)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;mid&nbsp;=&nbsp;(l&nbsp;+&nbsp;r)&nbsp;&gt;&gt;&nbsp;1;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; font-family: Courier;">//</span><span style="color: #008000; font-family: Courier;">&nbsp;递归创建左右儿子结点</span><span style="color: #008000;"><br /></span><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_build(p&lt;&lt;1,&nbsp;l,&nbsp;mid);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_build(p&lt;&lt;1|1,&nbsp;mid+1,&nbsp;r);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateFromSon();</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::segtree_insert(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;y,&nbsp;ValueType&nbsp;val)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(&nbsp;!is_intersect(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;;</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(&nbsp;is_contain(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateByValue(val);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].giveLazyToSon();</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;mid&nbsp;=&nbsp;(l&nbsp;+&nbsp;r)&nbsp;&gt;&gt;&nbsp;1;&nbsp;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(p&lt;&lt;1,&nbsp;l,&nbsp;mid,&nbsp;x,&nbsp;y,&nbsp;val);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(p&lt;&lt;1|1,&nbsp;mid+1,&nbsp;r,&nbsp;x,&nbsp;y,&nbsp;val);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateFromSon();</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #0000ff; font-family: Courier;">void</span><span style="font-family: Courier;">&nbsp;treeNode::segtree_query(</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;p,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;l,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;r,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;</span><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;y,&nbsp;treeNode&amp;&nbsp;ans)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(&nbsp;!is_intersect(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;;</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(&nbsp;is_contain(l,&nbsp;r,&nbsp;x,&nbsp;y)&nbsp;)&nbsp;{</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">ans.mergeQuery(p);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].giveLazyToSon();</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;mid&nbsp;=&nbsp;(l&nbsp;+&nbsp;r)&nbsp;&gt;&gt;&nbsp;1;&nbsp;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_query(p&lt;&lt;1,&nbsp;l,&nbsp;mid,&nbsp;x,&nbsp;y,&nbsp;ans);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_query(p&lt;&lt;1|1,&nbsp;mid+1,&nbsp;r,&nbsp;x,&nbsp;y,&nbsp;ans);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;nodes[p].updateFromSon();</span><br /><span style="font-family: Courier;">}&nbsp;</span><br /><br /><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;n,&nbsp;t,&nbsp;o;</span><br /><br /><span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;main()&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;i;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">while</span><span style="font-family: Courier;">(&nbsp;scanf("%d&nbsp;%d&nbsp;%d",&nbsp;&amp;n,&nbsp;&amp;t,&nbsp;&amp;o)&nbsp;!=&nbsp;EOF&nbsp;)&nbsp;{</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">treeNode::segtree_build(1,&nbsp;1,&nbsp;n);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">for</span><span style="font-family: Courier;">(i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;n;&nbsp;i++)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeNode::segtree_insert(1,&nbsp;1,&nbsp;n,&nbsp;i,&nbsp;i,&nbsp;1&lt;&lt;0);</span><span style="color: #008000;"><br /></span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">while</span><span style="font-family: Courier;">(o--)&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">char</span><span style="font-family: Courier;">&nbsp;str[10];</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">int</span><span style="font-family: Courier;">&nbsp;x,&nbsp;y,&nbsp;z;</span><br /><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">scanf("%s",&nbsp;str);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(str[0]&nbsp;==&nbsp;'C')&nbsp;{</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">scanf("%d&nbsp;%d&nbsp;%d",&nbsp;&amp;x,&nbsp;&amp;y,&nbsp;&amp;z);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(x&nbsp;&gt;&nbsp;y)&nbsp;swap(x,&nbsp;y);</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">treeNode::segtree_insert(1,&nbsp;1,&nbsp;n,&nbsp;x,&nbsp;y,&nbsp;1&lt;&lt;(z-1)&nbsp;);</span><span style="color: #008000;"><br /></span>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">}</span><span style="color: #0000ff; font-family: Courier;">else</span><span style="font-family: Courier;">&nbsp;{</span><br />&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Courier;">scanf("%d&nbsp;%d",&nbsp;&amp;x,&nbsp;&amp;y);</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(x&nbsp;&gt;&nbsp;y)&nbsp;swap(x,&nbsp;y);</span><br /><span style="font-family: Courier;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;treeNode&nbsp;ans;</span><br /><span style="font-family: Courier;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;treeNode::segtree_query(1,&nbsp;1,&nbsp;n,&nbsp;x,&nbsp;y,&nbsp;ans);</span><br /><span style="font-family: Courier;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;z&nbsp;=&nbsp;0;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">for</span><span style="font-family: Courier;">(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;t;&nbsp;i++)&nbsp;{</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">if</span><span style="font-family: Courier;">(&nbsp;(1&lt;&lt;i)&nbsp;&amp;&nbsp;ans.colorBit&nbsp;)&nbsp;{</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;++;</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",&nbsp;z);</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><br /><span style="font-family: Courier;">&nbsp;&nbsp;&nbsp;&nbsp;}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; font-family: Courier;">return</span><span style="font-family: Courier;">&nbsp;0;</span><br /><span style="font-family: Courier;">}</span><br /><br /><span style="color: #008000; font-family: Courier;">/*</span><span style="color: #008000;"><br /></span><span style="color: #008000; font-family: Courier;">2&nbsp;2&nbsp;4<br /></span><span style="color: #008000; font-family: Courier;">C&nbsp;1&nbsp;1&nbsp;2<br /></span><span style="color: #008000; font-family: Courier;">P&nbsp;1&nbsp;2<br /></span><span style="color: #008000; font-family: Courier;">C&nbsp;2&nbsp;2&nbsp;2<br /></span><span style="color: #008000; font-family: Courier;">P&nbsp;1&nbsp;2<br /></span><span style="color: #008000; font-family: Courier;">*/</span></div><img src ="http://www.cppblog.com/menjitianya/aggbug/143149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-31 19:49 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/31/143149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZJU 3349 Special Subsequence</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/31/143136.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 31 Mar 2011 09:39:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/31/143136.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143136.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/31/143136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143136.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143136.html</trackback:ping><description><![CDATA[<strong>题目链接：</strong><a href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3349">http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3349</a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000"><br><img id=Codehighlighter1_1_298_Open_Image onclick="this.style.display='none'; Codehighlighter1_1_298_Open_Text.style.display='none'; Codehighlighter1_1_298_Closed_Image.style.display='inline'; Codehighlighter1_1_298_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1_298_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1_298_Closed_Text.style.display='none'; Codehighlighter1_1_298_Open_Image.style.display='inline'; Codehighlighter1_1_298_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1_298_Closed_Text>/**/</span><span id=Codehighlighter1_1_298_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">题意：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给定一个d(0&nbsp;&lt;=&nbsp;d&nbsp;&lt;=&nbsp;10^8)和(N&nbsp;&lt;=&nbsp;10^5)的数列，求最长的特殊子序列，<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">所谓特殊子序列就是相邻元素之间的绝对值之差小于等于d。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">解法：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">动态规划+线段树<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">思路：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;这题又是一个动态规划，状态转移方程很容易想到：<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;dp[&nbsp;val[i]&nbsp;]&nbsp;=&nbsp;1&nbsp;+&nbsp;max(&nbsp;dp[&nbsp;val[i]&nbsp;-&nbsp;d&nbsp;]&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">&nbsp;dp[&nbsp;val[i]&nbsp;+&nbsp;d&nbsp;]&nbsp;)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">dp[j]&nbsp;表示以j为止的最长特殊子序列的值，这样就可以维护一个区间，每次<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">查询和当前数绝对值差小于等于d的数组成的区间，将最大值+1更新到当前数<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">对应的位置上，利用线段树每次更新和查询都是log(n)。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;600010</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;d;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val[maxn];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_439_519_Open_Image onclick="this.style.display='none'; Codehighlighter1_439_519_Open_Text.style.display='none'; Codehighlighter1_439_519_Closed_Image.style.display='inline'; Codehighlighter1_439_519_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_439_519_Closed_Image onclick="this.style.display='none'; Codehighlighter1_439_519_Closed_Text.style.display='none'; Codehighlighter1_439_519_Open_Image.style.display='inline'; Codehighlighter1_439_519_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;Tree&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_439_519_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_439_519_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;son[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_479_517_Open_Image onclick="this.style.display='none'; Codehighlighter1_479_517_Open_Text.style.display='none'; Codehighlighter1_479_517_Closed_Image.style.display='inline'; Codehighlighter1_479_517_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_479_517_Closed_Image onclick="this.style.display='none'; Codehighlighter1_479_517_Closed_Text.style.display='none'; Codehighlighter1_479_517_Open_Image.style.display='inline'; Codehighlighter1_479_517_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;clear()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_479_517_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_479_517_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;son[</span><span style="COLOR: #000000">1</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">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">T[maxn</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;tot;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_563_588_Open_Image onclick="this.style.display='none'; Codehighlighter1_563_588_Open_Text.style.display='none'; Codehighlighter1_563_588_Closed_Image.style.display='inline'; Codehighlighter1_563_588_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_563_588_Closed_Image onclick="this.style.display='none'; Codehighlighter1_563_588_Closed_Text.style.display='none'; Codehighlighter1_563_588_Open_Image.style.display='inline'; Codehighlighter1_563_588_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max(</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="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_563_588_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_563_588_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;a&nbsp;:&nbsp;b;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_612_637_Open_Image onclick="this.style.display='none'; Codehighlighter1_612_637_Open_Text.style.display='none'; Codehighlighter1_612_637_Closed_Image.style.display='inline'; Codehighlighter1_612_637_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_612_637_Closed_Image onclick="this.style.display='none'; Codehighlighter1_612_637_Closed_Text.style.display='none'; Codehighlighter1_612_637_Open_Image.style.display='inline'; Codehighlighter1_612_637_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Min(</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="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_612_637_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_612_637_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;a&nbsp;:&nbsp;b;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_701_960_Open_Image onclick="this.style.display='none'; Codehighlighter1_701_960_Open_Text.style.display='none'; Codehighlighter1_701_960_Closed_Image.style.display='inline'; Codehighlighter1_701_960_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_701_960_Closed_Image onclick="this.style.display='none'; Codehighlighter1_701_960_Closed_Text.style.display='none'; Codehighlighter1_701_960_Open_Image.style.display='inline'; Codehighlighter1_701_960_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Query(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nx,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ny,&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;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;ans)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_701_960_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_701_960_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nx&nbsp;</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;ny&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;root&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;T[root].Max&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;ans)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img id=Codehighlighter1_796_841_Open_Image onclick="this.style.display='none'; Codehighlighter1_796_841_Open_Text.style.display='none'; Codehighlighter1_796_841_Closed_Image.style.display='inline'; Codehighlighter1_796_841_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_796_841_Closed_Image onclick="this.style.display='none'; Codehighlighter1_796_841_Closed_Text.style.display='none'; Codehighlighter1_796_841_Open_Image.style.display='inline'; Codehighlighter1_796_841_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nx&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;ny)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_796_841_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_796_841_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Max(ans,&nbsp;T[root].Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Query(T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;nx,&nbsp;ny,&nbsp;l,&nbsp;mid,&nbsp;ans);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Query(T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;nx,&nbsp;ny,&nbsp;mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;r,&nbsp;ans);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1019_1313_Open_Image onclick="this.style.display='none'; Codehighlighter1_1019_1313_Open_Text.style.display='none'; Codehighlighter1_1019_1313_Closed_Image.style.display='inline'; Codehighlighter1_1019_1313_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1019_1313_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1019_1313_Closed_Text.style.display='none'; Codehighlighter1_1019_1313_Open_Image.style.display='inline'; Codehighlighter1_1019_1313_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Insert(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;root,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nPos,&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;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1019_1313_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1019_1313_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nPos&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;nPos&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;r)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img id=Codehighlighter1_1074_1112_Open_Image onclick="this.style.display='none'; Codehighlighter1_1074_1112_Open_Text.style.display='none'; Codehighlighter1_1074_1112_Closed_Image.style.display='inline'; Codehighlighter1_1074_1112_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1074_1112_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1074_1112_Closed_Text.style.display='none'; Codehighlighter1_1074_1112_Open_Image.style.display='inline'; Codehighlighter1_1074_1112_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(root&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1074_1112_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1074_1112_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tot</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[root].clear();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;T[root].Max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Max(val,&nbsp;T[root].Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_1181_1195_Open_Image onclick="this.style.display='none'; Codehighlighter1_1181_1195_Open_Text.style.display='none'; Codehighlighter1_1181_1195_Closed_Image.style.display='inline'; Codehighlighter1_1181_1195_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1181_1195_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1181_1195_Closed_Text.style.display='none'; Codehighlighter1_1181_1195_Open_Image.style.display='inline'; Codehighlighter1_1181_1195_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(l&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;nPos&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;nPos&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1181_1195_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1181_1195_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(l&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;r)&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(T[root].son[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;nPos,&nbsp;l,&nbsp;mid,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Insert(T[root].son[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;nPos,&nbsp;mid</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;r,&nbsp;val);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_1327_1933_Open_Image onclick="this.style.display='none'; Codehighlighter1_1327_1933_Open_Text.style.display='none'; Codehighlighter1_1327_1933_Closed_Image.style.display='inline'; Codehighlighter1_1327_1933_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1327_1933_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1327_1933_Closed_Text.style.display='none'; Codehighlighter1_1327_1933_Open_Image.style.display='inline'; Codehighlighter1_1327_1933_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1327_1933_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1327_1933_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MMin,&nbsp;MMax;<br><img id=Codehighlighter1_1392_1920_Open_Image onclick="this.style.display='none'; Codehighlighter1_1392_1920_Open_Text.style.display='none'; Codehighlighter1_1392_1920_Closed_Image.style.display='inline'; Codehighlighter1_1392_1920_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1392_1920_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1392_1920_Closed_Text.style.display='none'; Codehighlighter1_1392_1920_Open_Image.style.display='inline'; Codehighlighter1_1392_1920_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d&nbsp;%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">d)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1392_1920_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1392_1920_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_1419_1573_Open_Image onclick="this.style.display='none'; Codehighlighter1_1419_1573_Open_Text.style.display='none'; Codehighlighter1_1419_1573_Closed_Image.style.display='inline'; Codehighlighter1_1419_1573_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1419_1573_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1419_1573_Closed_Text.style.display='none'; Codehighlighter1_1419_1573_Open_Image.style.display='inline'; Codehighlighter1_1419_1573_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1419_1573_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1419_1573_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&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">val[i]);<br><img id=Codehighlighter1_1455_1520_Open_Image onclick="this.style.display='none'; Codehighlighter1_1455_1520_Open_Text.style.display='none'; Codehighlighter1_1455_1520_Closed_Image.style.display='inline'; Codehighlighter1_1455_1520_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1455_1520_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1455_1520_Closed_Text.style.display='none'; Codehighlighter1_1455_1520_Open_Image.style.display='inline'; Codehighlighter1_1455_1520_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1455_1520_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1455_1520_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MMin&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Min(MMin,&nbsp;val[i]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MMax&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Max(MMax,&nbsp;val[i]);<br><img id=Codehighlighter1_1526_1569_Open_Image onclick="this.style.display='none'; Codehighlighter1_1526_1569_Open_Text.style.display='none'; Codehighlighter1_1526_1569_Closed_Image.style.display='inline'; Codehighlighter1_1526_1569_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1526_1569_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1526_1569_Closed_Text.style.display='none'; Codehighlighter1_1526_1569_Open_Image.style.display='inline'; Codehighlighter1_1526_1569_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1526_1569_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1526_1569_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MMin&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;val[i];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MMax&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;val[i];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;root&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ans&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_1644_1892_Open_Image onclick="this.style.display='none'; Codehighlighter1_1644_1892_Open_Text.style.display='none'; Codehighlighter1_1644_1892_Closed_Image.style.display='inline'; Codehighlighter1_1644_1892_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1644_1892_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1644_1892_Closed_Text.style.display='none'; Codehighlighter1_1644_1892_Open_Image.style.display='inline'; Codehighlighter1_1644_1892_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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;n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1644_1892_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1644_1892_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;l&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(val[i]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;d)&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;MMin&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;MMin&nbsp;:&nbsp;(val[i]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;d);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(val[i]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;d)&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;MMax&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;MMax&nbsp;:&nbsp;(val[i]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;d);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MM&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query(root,&nbsp;l,&nbsp;r,&nbsp;MMin,&nbsp;MMax,&nbsp;MM);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert(root,&nbsp;val[i],&nbsp;MMin,&nbsp;MMax,&nbsp;MM&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(MM&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;ans)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;MM&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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;ans);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&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><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<img src ="http://www.cppblog.com/menjitianya/aggbug/143136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-31 17:39 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/31/143136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZJU 2451 Minimizing maximizer</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/31/143121.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 31 Mar 2011 08:12:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/31/143121.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143121.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/31/143121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143121.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143121.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1451/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;有这样一个机器Maximizer，它的输入是N(N&nbsp;&lt;=&nbsp;50000)个1到N的数，输出最大的数。这个机器的工作原理是通过读入M(M&nbsp;&lt;=&nbsp;5...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/03/31/143121.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-31 16:12 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/31/143121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PKU 2104 K-th Number</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/31/143082.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Thu, 31 Mar 2011 03:33:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/31/143082.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143082.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/31/143082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143082.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143082.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://poj.org/problem?id=2104/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出一个长度为N(N&nbsp;&lt;=&nbsp;100000)的数列，然后是一连串询问，询问数&lt;=&nbsp;50000，询问的格式是a,&nbsp;b,&nbsp;k，问[a,&nbsp;b]区间中的k小数。解法：二分+归并树+线段树思路：&nb...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/03/31/143082.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-31 11:33 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/31/143082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 3333 Turing Tree</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/30/143059.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Wed, 30 Mar 2011 14:52:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/30/143059.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143059.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/30/143059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143059.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143059.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=3333/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出一个长度为N(N&nbsp;&lt;=&nbsp;30000)的数列，然后是一连串询问，询问数&lt;=&nbsp;100000，问给定区间内不同数字的和。解法：离线算法+离散化+线段树思路：&nbsp;&nbsp;&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/03/30/143059.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-30 22:52 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/30/143059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 1255 覆盖的面积</title><link>http://www.cppblog.com/menjitianya/archive/2011/03/30/143043.html</link><dc:creator>英雄哪里出来</dc:creator><author>英雄哪里出来</author><pubDate>Wed, 30 Mar 2011 11:58:00 GMT</pubDate><guid>http://www.cppblog.com/menjitianya/archive/2011/03/30/143043.html</guid><wfw:comment>http://www.cppblog.com/menjitianya/comments/143043.html</wfw:comment><comments>http://www.cppblog.com/menjitianya/archive/2011/03/30/143043.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/menjitianya/comments/commentRss/143043.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/menjitianya/services/trackbacks/143043.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=1255/**//*题意：&nbsp;&nbsp;&nbsp;&nbsp;给出N(N&nbsp;&lt;=&nbsp;1000)个矩形，求被覆盖2次以上的矩形面积并。解法：离散化+线段树思路：&nbsp;&nbsp;&nbsp;&nbsp;类似于覆盖一次的矩形面积并问题，还是用线段树求解，首先我们将每...&nbsp;&nbsp;<a href='http://www.cppblog.com/menjitianya/archive/2011/03/30/143043.html'>阅读全文</a><img src ="http://www.cppblog.com/menjitianya/aggbug/143043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/menjitianya/" target="_blank">英雄哪里出来</a> 2011-03-30 19:58 <a href="http://www.cppblog.com/menjitianya/archive/2011/03/30/143043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>