﻿<?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++博客-From A Start,As An Acmer-随笔分类-数据结构</title><link>http://www.cppblog.com/aswmtjdsj/category/17253.html</link><description>My Way to Final</description><language>zh-cn</language><lastBuildDate>Mon, 12 Sep 2011 17:57:35 GMT</lastBuildDate><pubDate>Mon, 12 Sep 2011 17:57:35 GMT</pubDate><ttl>60</ttl><item><title>HDU 4022 Bombing【STL 继续练习】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/09/10/155518.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Sat, 10 Sep 2011 11:10:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/09/10/155518.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/155518.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/09/10/155518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/155518.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/155518.html</trackback:ping><description><![CDATA[今天真是各种sb，弱爆了。<br />果然以后做网预的时候就应该第一道水题用STL各种水。<br />闲话少说。<br />本题题意略，直接说做法。<br />首先，必需的是离散化。sort+MAP是我的离散化方法，个人觉得这样虽然慢，但是好写。<br />后面的就八仙过海各显神通了。什么用十字链表模拟啊，什么multiset啊，什么vector啊，什么数组直接标记啊，不一而足，水题就要用水题的方法做。<br />我是vector做的。<br />开了200000个vector分别用来存储离散化后的每行及每列中元素的个数。<br />每次查询的时候，将对应行/或者列的size输出，然后对其中每个元素在另外一边（行/列）用upper/lower_bound查存在性，存在的都删除erase，然后将本行/列清空clear。<br />一开始就是WA在此处了，因为有重复坐标的点，而set的一般写法无法处理这种情况，想了半天最后用了vector+二分。太蛋疼了。<br />还RE了一次，因为对于vector来说，erase作为动态删除会使其周围元素的指针改变，会发生内存泄漏、指针悬挂等现象，所以果断要用erase的范围删除操作[low,up)。<br />没啥说的，复杂度均摊下来很小，因为不会重复统计，所以顶多是NlogN的复杂度，再加上离散化的复杂度，整体NlogN。<br /><br />老话，STL能做，为啥要手写？出题卡STL的就是sb，不解释；至于什么叫卡STL，各位大牛都懂得。<br />今天弱爆了，就这样吧。<br />附代码：<br /><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: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">set</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">map</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;maxn&nbsp;100005</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;point<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x,y;<br />&nbsp;&nbsp;&nbsp;&nbsp;point(){}<br />&nbsp;&nbsp;&nbsp;&nbsp;point(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b):x(a),y(b){}<br />}p[maxn];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x[maxn],y[maxn];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,m;<br />vector&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;X[maxn],Y[maxn];<br />map&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;MX,MY;<br />vector&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;::iterator&nbsp;xlow,xup,ylow,yup,idx,idy;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">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; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">m)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;(n&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;m))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MX.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MY.clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; ">X[i].empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X[i].clear();<br />&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; ">Y[i].empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y[i].clear();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;point(a,b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(x,x&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(y,y&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;cntx&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,cnty&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(MX[x[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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MX[x[i]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cntx</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(MY[y[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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MY[y[i]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cnty</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].x&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MX[p[i].x];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].y&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MY[p[i].y];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idx&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;lower_bound(X[p[i].x].begin(),X[p[i].x].end(),p[i].y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X[p[i].x].insert(idx,p[i].y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idy&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;lower_bound(Y[p[i].y].begin(),Y[p[i].y].end(),p[i].x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y[p[i].y].insert(idy,p[i].x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;m;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;mod,d;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">mod,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(mod&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MX[d];<br />&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; ">,X[d].size());<br />&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; ">(X[d].empty())<br />&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; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(idx&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;X[d].begin();idx&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;X[d].end();idx</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<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;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">idx;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ylow&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;lower_bound(Y[p].begin(),Y[p].end(),d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;upper_bound(Y[p].begin(),Y[p].end(),d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y[p].erase(ylow,yup);<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;X[d].clear();<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><span style="color: #0000FF; ">else</span><span style="color: #000000; "><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;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MY[d];<br />&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; ">,Y[d].size());<br />&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; ">(Y[d].empty())<br />&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; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(idy&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Y[d].begin();idy&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;Y[d].end();idy</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<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;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">idy;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlow&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;lower_bound(X[p].begin(),X[p].end(),d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xup&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;upper_bound(X[p].begin(),X[p].end(),d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X[p].erase(xlow,xup);<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;Y[d].clear();<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;puts(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/155518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-09-10 19:10 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/09/10/155518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 3887 Counting Offspring ［DFS序列＋树状数组］</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/07/28/151958.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Wed, 27 Jul 2011 16:47:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/07/28/151958.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/151958.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/07/28/151958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/151958.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/151958.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="font-family: 'Times New Roman'; line-height: normal; font-size: medium; "><h1 style="color: #1a5cc8; text-align: center; ">Counting Offspring</h1><font><strong><span style="font-family: Arial; font-size: 12px; font-weight: bold; color: green; ">Time Limit: 15000/5000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 32768/32768 K (Java/Others)<br />Total Submission(s): 423&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s): 137<br /></span></strong></font><br /><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Problem Description</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; ">You are given a tree, it&#8217;s root is p, and the node is numbered from 1 to n. Now define f(i) as the number of nodes whose number is less than i in all the succeeding nodes of node i. Now we need to calculate f(i) for any possible i.</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Input</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; ">Multiple cases (no more than 10), for each case:<br />The first line contains two integers n (0&lt;n&lt;=10^5) and p, representing this tree has n nodes, its root is p.<br />Following n-1 lines, each line has two integers, representing an edge in this tree.<br />The input terminates with two zeros.</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Output</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; ">For each test case, output n integer in one line representing f(1), f(2) &#8230; f(n), separated by a space.</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Sample Input</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; "><pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; "><div style="font-family: 'Courier New', Courier, monospace; ">15 7
7 10
7 1
7 9
7 3
7 4
10 14
14 2
14 13
9 11
9 6
6 5
6 8
3 15
3 12
0 0</div></pre></div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Sample Output</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; "><pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; "><div style="font-family: 'Courier New', Courier, monospace; ">0 0 0 0 0 1 6 0 3 1 0 0 0 2 0</div></pre></div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Author</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; ">bnugong</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; padding-top: 0px; padding-right: 14px; padding-bottom: 0px; padding-left: 14px; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Source</div><div class="panel_content" style="height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-position: initial initial; background-repeat: no-repeat repeat; "><a href="http://acm.hdu.edu.cn/search.php?field=problem&amp;key=2011%20Multi-University%20Training%20Contest%205%20-%20Host%20by%20BNU&amp;source=1&amp;searchmode=source" style="color: #1a5cc8; text-decoration: none; ">2011 Multi-University Training Contest 5 - Host by BNU</a></div></span><br /><br />题意是，给一棵树，给每个结点一个标号，问所有存在的结点，它的子树中，结点标号小于它的有多少个。<br /><br />做法：DFS序列构造＋树状数组查询区间。<br /><br />竟然忘了DFS的遍历的意义。对一棵树进行DFS遍历，一个结点最多到达两次，一次出，一次入，而这之间的结点标号均为它的子树结点的标号。所以只要用某种方法快速查询其左右标号内含的区间中，比它小的标号个数即可。（别＊2）在肖神的提携下，ym到了树状数组在本题的使用方法。<br /><br />做法流程。初始化（记得树状数组和DFS记录序列要开点数*2的。。因为这个nc半天，不解释。） －&gt;建图－&gt; DFS（因为HDU坑爹的栈大小，必须手写栈模拟DFS才能过。。第一次手工模拟DFS。。太蛋疼了。。调了无数次。）－&gt;对于每个点查询DFS序列。（既然是离线查询，那么就按照从小到大查吧。凡事要有个序，有序了就好查了。对于每个点的标号，先查它的左右区间是否有比它小的sum(r[i] - 1) - sum(l[i]]).....再把它插入树状数组中，插一次就好，不然结果还得除二。（都是肖神！）<br />T_T。。记得树状数组和dfs序列都是开到点数*2的，而其他的都是点数大小的。注意初始化和树状数组查询和更新时的范围同理。<br />代码：<br /><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: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stack</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></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 />stack&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;S;<br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; ">&nbsp;maxn&nbsp;100005</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;cnt,p,n,tot,lit[maxn],seq[maxn&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">],l[maxn],r[maxn],tr[maxn&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;bit(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x){</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 /></span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;vis[maxn];<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;edge<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;p,next;<br />&nbsp;&nbsp;&nbsp;&nbsp;edge(){}<br />&nbsp;&nbsp;&nbsp;&nbsp;edge(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;b):p(a),next(b){}<br />}v[maxn],e[maxn&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br /></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;p,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;q)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;e[tot]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;edge(q,v[p].next);<br />&nbsp;&nbsp;&nbsp;&nbsp;v[p].next&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />}<br /></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)<br />{<br />&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; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</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; ">;x&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;bit(x))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;tr[x];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;mod(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;x,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;val)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(;x&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;cnt;x&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;bit(x))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tr[x]&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;val;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;init()<br />{<br />&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 />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[i].next&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 />&nbsp;&nbsp;&nbsp;&nbsp;fill(tr,tr&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;fill(vis,vis&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">S.empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S.pop();<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;dfs()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;S.push(p);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">S.empty())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;now&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;S.top();<br />&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; ">vis[now])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seq[cnt]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;now;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l[now]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cnt</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vis[now]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;mark&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v[now].next;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">k;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e[k].next)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&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; ">vis[e[k].p])<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;&nbsp;&nbsp;&nbsp;&nbsp;mark&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S.push(e[k].p);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v[now].next&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e[k].next;<br />&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 />&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;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(mark)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(vis[now])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seq[cnt]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;now;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[now]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;cnt</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S.pop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;gao()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lit[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sum(r[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;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;sum(l[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mod(l[i],</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">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; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">p)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;(p&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;n))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;a,b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(a,b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(b,a);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dfs();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gao();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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; ">,lit[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar((i&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;n)</span><span style="color: #000000; ">?</span><span style="color: #000000; ">'</span><span style="color: #000000; ">\n</span><span style="color: #000000; ">'</span><span style="color: #000000; ">:</span><span style="color: #000000; ">'</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><div id="chromeVisPage2ExtensionDiv" style="display: none; ">Down</div><div id="chromeVisExtension2PageDiv" style="display: none; "></div><span style="border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; border-top-width: medium; border-right-width: medium; border-bottom-width: medium; border-left-width: medium; border-top-style: groove; border-right-style: groove; border-bottom-style: groove; border-left-style: groove; position: absolute; z-index: 100000000000; min-height: 5px; border-top-left-radius: 7px 7px; border-top-right-radius: 7px 7px; border-bottom-right-radius: 7px 7px; border-bottom-left-radius: 7px 7px; display: none; top: 0px; left: 10px; right: 100px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; min-width: 0px; max-width: 700px; background-color: #ffffff; "></span><div id="chromeVisBackground2LensDiv" style="display: none; " data-textcolor="#000000" data-bgcolor="#ffffff" data-textmag="0.39321600000000007"></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/151958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-07-28 00:47 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/07/28/151958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU 3673 David Shopping 【可修改堆】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150205.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Tue, 05 Jul 2011 05:10:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150205.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/150205.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/150205.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/150205.html</trackback:ping><description><![CDATA[<div><span style="color: #ff0000;">2007 Asia Regional Chengdu D题：David Shopping</span>    <br />原题链接：<a href="http://acm.hdu.edu.cn/showproblem.php?pid=3673">http://acm.hdu.edu.cn/showproblem.php?pid=3673</a><br />涉及算法：<span style="color: #0000ff;">可修改堆+标记数组</span>（后者不算算法&#8230;&#8230;请勿鄙视）（大牛们都用STL过的，我手写优先队列。。。。蛋都碎了）<br />    <br />题目大意：<br />&nbsp;&nbsp;&nbsp; 你有一个能放M(M &lt;= 50000)个物品的容器，你可能会遇到N（N &lt;= 100000)个物品。<br />&nbsp;&nbsp;&nbsp; 规则：<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 1.遇到的物品K你如果之前没有遇到过，且你的容器未满，那么把这个物品（编号K），放进容器中，并记录数字1（相当于权值），且记录遇到该物品的时间t。<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 2.遇到的物品K如果在你的容器里，那么仅仅把它的标记数字（即所谓权值+1）。<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 3.遇到的物品K你如果之前没有遇到过，且你的容器已满，那么就把容器里标记数字最大的容器移除，如果不止一个，那么就把最先进入容器的那一个移除。（移除的物品就相当于没有遇到过，之后遇到算第一次遇到。）<br />&nbsp;&nbsp;&nbsp; 求解问题：给你M，N，以及一行数字N个K(i)，（K（i）&lt; 2^20,i = 1 to N)，输出共发生移除操作多少次。<span style="color: #ff0000;">（TimeLimit：1s）</span>    <br />算法：<br />    <span style="color: #0000ff;">模拟优先队列，实现O(Nlog(M))的时间复杂度的算法。<br />利用堆的性质，实现插入，删除，维持堆的性质操作均为O(logM)的复杂度。<br />利用外置标记数组，记录关键值对应元素在书中的位置，类似（计数排序）（或者说哈希表，或者说外部索引数组）的思想。（其实我觉得算是骗过去的。因为空间复杂度O(MAX(K(i)))。。。如果K(i)大一点，内存就爆了。。不过现场赛不卡内存，幸好幸好～</span>    </div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdio</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;left(x)&nbsp;(x&nbsp;&lt;&lt;&nbsp;1)</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;right(x)&nbsp;((x&nbsp;&lt;&lt;&nbsp;1)&nbsp;+&nbsp;1)</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;parent(x)&nbsp;(x&nbsp;&gt;&gt;&nbsp;1)</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;heap<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key,t,w;<br />}&nbsp;h[</span><span style="color: #000000;">50005</span><span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">key为物品名K，t为入队时间，w为权值</span><span style="color: #008000;"><br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;now,n,m,cnt,fuck[(</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">21</span><span style="color: #000000;">)],pick[</span><span style="color: #000000;">100005</span><span style="color: #000000;">];</span><span style="color: #008000;">//</span><span style="color: #008000;">now：初始插入位置，n,m:respectively，cnt:关键计数器，记录出队次数，f**k数组用于计数排序记录某元素在堆/队列中的位置</span><span style="color: #008000;"><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;init()</span><span style="color: #008000;">//</span><span style="color: #008000;">初始化</span><span style="color: #008000;"><br /></span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h[i].key&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;h[i].w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">堆中元素权值为零</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h[i].t&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;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">堆中元素入队时间均为最大时间值+1</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;make(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)</span><span style="color: #008000;">//</span><span style="color: #008000;">保持堆的性质，同时更新外部索引数组(O(h)&nbsp;=&nbsp;O(logM))</span><span style="color: #008000;"><br /></span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;large,l,r;<br />&nbsp;&nbsp;&nbsp;&nbsp;l&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;left(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;right(i);<br />&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;n&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(h[l].w&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;h[i].w&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;(h[l].w&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;h[i].w&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;h[l].t&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;h[i].t)))</span><span style="color: #008000;">//</span><span style="color: #008000;">同时对权值和时间进行对比，维持性质</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;large&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;large&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(h[r].w&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;h[large].w&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;(h[r].w&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;h[large].w&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;h[r].t&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;h[large].t)))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;large&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(large&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;i)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;tempp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fuck[h[i].key];</span><span style="color: #008000;">//</span><span style="color: #008000;">先交换外部索引数组中对应元素的位置，再维护堆的性质，保持实时更新</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuck[h[i].key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fuck[h[large].key];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuck[h[large].key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tempp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(h[i],h[large]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make(large);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></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;key,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t)</span><span style="color: #008000;">//</span><span style="color: #008000;">插入函数，先插入，通过now记录暂时的初始位置，再用保持堆的性质来维护堆且维护元素位置(O(h)&nbsp;=&nbsp;O(logM)，等价于维护堆性质的复杂度)</span><span style="color: #008000;"><br /></span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;h[p].key&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;key;<br />&nbsp;&nbsp;&nbsp;&nbsp;h[p].t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;h[p].w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;fuck[key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;p;<br />&nbsp;&nbsp;&nbsp;&nbsp;make(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />}<br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert2(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t)</span><span style="color: #008000;">//</span><span style="color: #008000;">同时实现出队和入队操作。（此时为队列已满的情况）(O(h)&nbsp;=&nbsp;O(logM)，等价于维护堆性质的复杂度)</span><span style="color: #008000;"><br /></span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;fuck[h[</span><span style="color: #000000;">1</span><span style="color: #000000;">].key]&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;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">一句话出队，哇卡卡～</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;fuck[key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;h[</span><span style="color: #000000;">1</span><span style="color: #000000;">].key&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;key;<br />&nbsp;&nbsp;&nbsp;&nbsp;h[</span><span style="color: #000000;">1</span><span style="color: #000000;">].t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;h[</span><span style="color: #000000;">1</span><span style="color: #000000;">].w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;make(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br />}<br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;re(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i)</span><span style="color: #008000;">//</span><span style="color: #008000;">所谓的权值修护（堆的可修改性）(O(h)&nbsp;=&nbsp;O(logM)，等价于维护堆性质的复杂度)</span><span style="color: #008000;"><br /></span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;mark&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(i);</span><span style="color: #008000;">//</span><span style="color: #008000;">对于权值增加的堆元素，沿路向上，进行反向堆维护，从而使权值更改的元素达到正确的位置，方便之后重新进行维护堆的性质操作</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(p&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;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(h[p].w&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;h[i].w&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;(h[p].w&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;h[i].w&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;h[p].t&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;h[i].t)))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;tempp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fuck[h[i].key];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuck[h[i].key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;fuck[h[p].key];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuck[h[p].key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;tempp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(h[i],h[p]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;re(p);<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000;">//</span><span style="color: #008000;">重新堆维护的起始点，某祖先点，或者该点</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(mark)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;p;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;i;<br />}<br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;print()</span><span style="color: #008000;">//</span><span style="color: #008000;">这脑残函数是用来测试sample的。。帮了我大忙阿。。。其实大神们的调试都是各有风格的，而小菜们的调试，如我，都是类似的。。。</span><span style="color: #008000;"><br /></span><span style="color: #000000;">{<br />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">h[%d]&nbsp;%d&nbsp;%d&nbsp;%d&nbsp;%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,i,h[i].key,h[i].w,h[i].t,fuck[h[i].key]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;FIND(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key){</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;fuck[key];}</span><span style="color: #008000;">//</span><span style="color: #008000;">索引查找，一句话函数～</span><span style="color: #008000;"><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;solve()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key,pos,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 />&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">缓存读入，查找最大key值元素</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">pick[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(Max&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;pick[i])&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;pick[i]&nbsp;:&nbsp;Max;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;Max;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">通过key值元素的最大值，开适合大小的索引数组（节省内存和时间）</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fuck[i]&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 />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;m;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pick[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;FIND(key);</span><span style="color: #008000;">//</span><span style="color: #008000;">查找是否已入队</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(pos&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;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">新插</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(now&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;n)</span><span style="color: #008000;">//</span><span style="color: #008000;">已满</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert2(key,i);<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><span style="color: #0000ff;">else</span><span style="color: #008000;">//</span><span style="color: #008000;">未满</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(key,now,i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #008000;">//</span><span style="color: #008000;">已有</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h[pos].w&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">WA&nbsp;POINT</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make(re(pos));</span><span style="color: #008000;">//</span><span style="color: #008000;">可修改堆。。。之前一直忘记了这个根本。。。加了修改权值操作之后就过了。。蛋碎。。。。。</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">print();</span><span style="color: #008000;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />&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;">,cnt);<br />}<br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;CAS&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n,</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="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(n&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;m))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">Case&nbsp;%d:&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,CAS</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #008000;">//</span><span style="color: #008000;">小菜出品，欢迎大牛拍我。。。。</span></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/150205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-07-05 13:10 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BOJ 1295 ACM system 【可修改堆】</title><link>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html</link><dc:creator>BUPT-[aswmtjdsj] @ Penalty</dc:creator><author>BUPT-[aswmtjdsj] @ Penalty</author><pubDate>Tue, 05 Jul 2011 05:01:00 GMT</pubDate><guid>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html</guid><wfw:comment>http://www.cppblog.com/aswmtjdsj/comments/150201.html</wfw:comment><comments>http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/aswmtjdsj/comments/commentRss/150201.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/aswmtjdsj/services/trackbacks/150201.html</trackback:ping><description><![CDATA[<div><center>ACM system</center><center><a href="http://boj.me/onlinejudge/login.html">Login and star it!</a></center><center>Submit: 283&nbsp;&nbsp;&nbsp;Accepted:39</center><center>Time Limit: 3000MS&nbsp;&nbsp;Memory Limit: 65535K</center>Description<br />912实验室最近设计了一种能够自动控制进程调度的系统，英文名是Automatic Control Machinery，简称ACM。该系统具有很多优秀的功能，为了方便大家的理解，这里先介绍一下关于进程、进程调度的常识。<br /> 1、	每个进程需要占用1个或多个单位内存空间，然而令人惊叹的是，在912实验室开发的平台上，一个进程只需要占用1个单位内存！<br /> 2、	每个进程用三个参量来表示，编号、权值、内存地址(0x00000000~0xFFFFFFFF)。<br /> 3、	所有的进程都被集中到一个名为&#8220;进程池&#8221;的地方，ACM系统可以实时的从进程池中选取最高优先级的进程。<br /> 4、	我们定义进程之间的优先级如下，如果两个进程的权值不同，权值大的优先级高；如果权值相同，编号小的进程优先级高。<br /> 现在就要介绍下ACM系统的详细功能了，它总共有4种操作：<br /> 1、	Get，返回当前最高优先级的进程信息(编号、权值、内存地址)<br /> 2、	Creat ID W ADDRESS，在进程池中创建一个编号为ID，权值为W，地址为ADDRESS的进程<br /> 3、	Kill ID，无条件的中止编号为ID的进程<br /> 4、	Change ID W，改变编号为ID的进程的权值<br /> 由于ACM系统尚在理论研究阶段，所以我们希望热心的你帮忙实现该系统，以具备上述所说的功能。当然，你的系统应该有一定的健壮性，至少能够对错误的操作给出异常提示。<br /> <br /><br />Input<br />输入包含多组测试数据。<br /> 首先第一行输入一个数T(T&lt;=10)，表示总共有T组测试数据。<br /> 接下来是每组测试数据，第一行是一个数N(N&lt;=100000)，表示总共有N个不同编号(编号从0到N-1)的进程。然后是一个数n(n&amp; lt;=100)，表示ACM系统启动的时候，需要初始化的n个进程。接着n行，都是id、w、address这样的形式出现，表示这n个进程的详细信 息。<br /> 紧接着是一个数M(M&lt;=200000)，表示总共有M个操作。接着M行，描述的是下面四种中的某一种操作：<br /> 1、	Get <br /> 2、	Creat ID W ADDRESS<br /> 3、	Kill ID<br /> 4、	Change ID W<br /> <br /><br />Output<br />首先，输出Case X：其中X代表是第X组数据(具体格式参照样例)。<br /> 对于Get操作，你需要返回最高优先级进程的信息 或 异常提示(进程池中无进程)。<br /> 对于Creat、Kill、Change操作，如果出现了错误操作(新添加进程的编号已经存在了、新添加进程的地址已经被使用了、中止根本不存在的进程、改变不存在进程的权值)，给出异常提示，并忽略该操作；如果上述三种操作都正确，不需要输出任何东西。<br /> 对于所有的异常，只需输出&#8220;ERROR！&#8221;即可。<br /> <br /><br />Sample Input<br /><br />2<br /> 1<br /> 1<br /> 0 3 0xAAAAAAAA<br /> 3<br /> Creat 0 2 0xFFFFFFFF<br /> Kill 0<br /> Get <br /> 3<br /> 2<br /> 0 1 0x11112222<br /> 1 2 0x22221111<br /> 5<br /> Get<br /> Change 2 2<br /> Kill 1<br /> Get<br /> Kill 1<br /> <br /><br />Sample Output<br /><br />Case 1:<br /> ERROR!<br /> ERROR!<br /> Case 2:<br /> 1 2 0x22221111<br /> ERROR!<br /> 0 1 0x11112222<br /> ERROR!<br /> <br /><br />Hint<br />巨大的输入输出，推荐scanf和printf<br /><br />Source<br />humanjustic</div><br />题目链接：<a target=""></a><a href="http://boj.me/onlinejudge/showproblem.php?problem_id=1295">http://boj.me/onlinejudge/showproblem.php?problem_id=1295</a><br /><br /><div><p>题目要求：</p><p>实现某种数据结构，性质如下。</p><p>可用于存储元素，元素有三个属性，编号（整数），权值（整数），地址（十六进制表示的整数）。</p><p>元素有偏序关系，权值大者优先，编号小者优先（二级比较）。</p><p>能够实现如下功能。</p><p>1初始化，可以初始化结构中N个元素（利用三个数值）。</p><p>2插入新元素，可返回错误信息。（编号重复的报错，地址重复的报错）</p><p>3删除已有元素，可返回错误信息。（编号不存在的报错）</p><p>4返回最高优先级元素，可返回错误信息。（结构中为空，即无元素报错）</p><p>5改变元素的权值，可返回错误信息。（对应编号不存在的报错）</p><p>&nbsp;</p><p>    <span style="color: #ff0000;">先说感想：</span></p><p>    <span style="color: #ff0000;">数据结构神马的，要有想象力，但是又不像贪心题和DP题那样需要YY能力。只要YY出能够优化复杂度的结构来即可。（前提是足够的数据结构知识储备和强大的代码能力）</span></p><p>&nbsp;</p><p>    <span style="color: #ff0000;">话说这道题的那个神奇的内存地质。。。十六进制数，让我好好学习了一下scanf、printf读入输出指定格式十六进制数，以及cout的格式输出。编程语言的开创者们真是给想好了各种内部优化，不用小菜我再去纠结格式输出的问题。（不然用字符串存地址，铁定超时啊）</span></p><p>&nbsp;</p><p>Solution：</p><p>直观解，该数据结构为堆。根据CLRS，可实现其build、heapify、increase、maximum、insert、delete等全部操作，这些操作的复杂度均为O(logN)（build除外，O(N * LogN)。</p><p>但问题在于，传统heap无法实现对于特定编号元素的O(LogN)的查找。</p><p>所以配合HASH（两种偷懒的HASH方式，一为int标记数组，二为map映射，分别为O(1)（标记）,O(LogN)（红黑树））。</p><p>&nbsp;</p><p>具体实现：</p><p>&nbsp;</p><p>int to[]，用标记数组记录对应编号元素（数组下标）在堆中的位置（还是数组下标，不过是堆的）</p><p>&nbsp;</p><p>map&lt;unsigned long,int&gt; add，用map将地址映射，用于记录指定地址的存在性</p><p>&nbsp;</p><p>struct node（为了元素的偏序关系才要这个）</p><p>&nbsp;</p><p>（以下每个函数在操作的同时，要维护to数组和add的HASH）</p><p>&nbsp;</p><p>inc函数，对于堆中特定位置的元素，增加其权值到指定值，再逆向维护堆的性质</p><p>&nbsp;</p><p>insert函数，将新加入的元素插在堆尾，再用inc函数增加权值并维护堆性质</p><p>&nbsp;</p><p>heapify函数，从特定位置起，向下正向维护堆性质</p><p>&nbsp;</p><p>del函数，交换堆尾元素与被删元素，再用heapify维护</p><p>&nbsp;</p><p>change函数，如果是权值增加操作则逆向维护堆，反之则正向维护堆</p><p>&nbsp;</p><p>所有函数实现的过程中通过对to数组和add哈希的查找来判断报错与否</p></div><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">cstdio</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">map</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br />#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 /><br />#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iomanip</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;left(i)&nbsp;((i)&nbsp;&lt;&lt;&nbsp;1)</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;right(i)&nbsp;(((i)&nbsp;&lt;&lt;&nbsp;1)&nbsp;+&nbsp;1)</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;parent(i)&nbsp;((i)&nbsp;&gt;&gt;&nbsp;1)</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;WRONG&nbsp;printf("ERROR!\n")</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br /><br />typedef&nbsp;unsigned&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;ul;<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;node<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num,value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;addr;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;node(){}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;node(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_num,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_value,ul&nbsp;_addr)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_num;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_addr;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;friend&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;node&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;node&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(a.value&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;b.value)&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;(a.value&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;b.value&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;a.num&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;b.num&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;print()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;0x%08X\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,num,value,addr);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout.fill('0');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;setw(8)&nbsp;&lt;&lt;&nbsp;HEX&nbsp;&lt;&lt;&nbsp;addr&nbsp;&lt;&lt;&nbsp;'\n';</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">for(int&nbsp;i&nbsp;=&nbsp;31;i&nbsp;&gt;=&nbsp;0;i&nbsp;-=&nbsp;4)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;temp&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;0;j&nbsp;&lt;&nbsp;4;j++)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;+=&nbsp;(((value&nbsp;&gt;&gt;&nbsp;(i&nbsp;-&nbsp;j))&nbsp;&amp;&nbsp;1)&nbsp;*&nbsp;(1&nbsp;&lt;&lt;&nbsp;(4&nbsp;-&nbsp;j)));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%c",(temp&nbsp;&gt;&nbsp;9)&nbsp;?&nbsp;(temp&nbsp;-&nbsp;10&nbsp;+&nbsp;'A')&nbsp;:&nbsp;(temp&nbsp;+&nbsp;'0'));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("\n");</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />};<br /><br /></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;heap<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;map&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ul,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;add;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;to[</span><span style="color: #000000;">100005</span><span style="color: #000000;">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">map&nbsp;&lt;int&nbsp;,&nbsp;int&gt;&nbsp;to;</span><span style="color: #008000;">//</span><span style="color: #008000;">id&nbsp;to&nbsp;index</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;ele[</span><span style="color: #000000;">100005</span><span style="color: #000000;">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;size;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;heap(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N){size&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;N;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)to[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 /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;value,ul&nbsp;addr)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(to[num]&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;add[addr]&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">id&nbsp;existed&nbsp;||&nbsp;addr&nbsp;existed<img src="http://www.cppblog.com/Images/dot.gif" alt="" />.</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&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: #0000ff;">false</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">judge</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;size]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;node;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc(size,num,value,addr);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;del(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"\t\t\tid&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;to[id]&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(to[id]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">delete&nbsp;doesn't&nbsp;exist</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&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: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"\t\t\tpos&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;to[id]&nbsp;&lt;&lt;&nbsp;"&nbsp;id&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;id&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;to[id];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[ele[size]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"\t\t\tpos&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;to[id]&nbsp;&lt;&lt;&nbsp;"&nbsp;id&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;id&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add[ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;addr]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[pos],ele[size]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;ele[size];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[size]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;NULL;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapify(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;top()</span><span style="color: #008000;">//</span><span style="color: #008000;">empty</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(size&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br /><br />&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: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;print();<br /><br />&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: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;heapify(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&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;left(pos),r&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;right(pos),big;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&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;size&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[pos]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[l])<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;l;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(r&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;size&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[big]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[r])<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;r;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(big&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;pos)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[big],ele[pos]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(to[ele[big]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num],to[ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"&nbsp;---------------------------"&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;ele[big]&nbsp;-&gt;&nbsp;num&nbsp;&nbsp;&lt;&lt;&nbsp;"&nbsp;id&nbsp;"&nbsp;&lt;&lt;&nbsp;ele[pos]&nbsp;-&gt;&nbsp;num&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;"&nbsp;---------------------------"&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapify(big);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;inc(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;value,ul&nbsp;ad)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;id;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;addr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ad;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add[ad]&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos,pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(pt&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;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">(</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[t]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[pt]))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[t],ele[pt]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(to[ele[t]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num],to[ele[pt]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;change(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;value)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(to[num]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pos&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;to[num];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;value)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;heapify(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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;">(ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;value)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ele[pos]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;value;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pos,pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(pos);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(pt&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;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">(</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[t]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">ele[pt]))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(ele[t],ele[pt]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(to[ele[t]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num],to[ele[pt]&nbsp;</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">&nbsp;num]);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;pt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;parent(t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />};<br /><br /></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;solve()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N,n,m;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">N);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">n);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;heap&nbsp;s(N);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,b;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ul&nbsp;c;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;%X</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">c);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.insert(a,b,c);<br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;"&nbsp;size&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;s.size&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;1;j&nbsp;&lt;=&nbsp;s.size;j++)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.ele[j]&nbsp;-&gt;&nbsp;print();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">m);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;m;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;"option&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;i&nbsp;+&nbsp;1&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;opt[</span><span style="color: #000000;">10</span><span style="color: #000000;">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%s</span><span style="color: #000000;">"</span><span style="color: #000000;">,opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;opt&nbsp;&lt;&lt;&nbsp;"&nbsp;";</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&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(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Get</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&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;">s.top())<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Creat</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&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,b;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ul&nbsp;c;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;%X</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">c);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("%d&nbsp;%d&nbsp;0x%X\n",a,b,c);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&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;">s.insert(a,b,c))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Kill</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&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;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("%d\n",a);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&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;">s.del(a))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&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(opt,</span><span style="color: #000000;">"</span><span style="color: #000000;">Change</span><span style="color: #000000;">"</span><span style="color: #000000;">))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&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,b;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">a,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">b);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("%d&nbsp;%d\n",a,b);</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&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;">s.change(a,b))<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WRONG;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">cout&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;"&nbsp;size&nbsp;:&nbsp;"&nbsp;&lt;&lt;&nbsp;s.size&nbsp;&lt;&lt;&nbsp;endl;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j&nbsp;=&nbsp;1;j&nbsp;&lt;=&nbsp;s.size;j++)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.ele[j]&nbsp;-&gt;&nbsp;print();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;"--------------------AA"&nbsp;&lt;&lt;&nbsp;endl&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">data.in</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdin);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">data3.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdout);<br /><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;while(scanf("%d",&amp;t)&nbsp;==&nbsp;1)</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;t;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&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;">,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 /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span></div><img src ="http://www.cppblog.com/aswmtjdsj/aggbug/150201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/aswmtjdsj/" target="_blank">BUPT-[aswmtjdsj] @ Penalty</a> 2011-07-05 13:01 <a href="http://www.cppblog.com/aswmtjdsj/archive/2011/07/05/150201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>