锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩亚洲国产精品,亚洲一区在线视频,国产农村妇女精品一区二区http://www.shnenglu.com/MatoNo1/archive/2013/08/31/202905.htmlMato_No1Mato_No1Sat, 31 Aug 2013 15:39:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2013/08/31/202905.htmlhttp://www.shnenglu.com/MatoNo1/comments/202905.htmlhttp://www.shnenglu.com/MatoNo1/archive/2013/08/31/202905.html#Feedback1http://www.shnenglu.com/MatoNo1/comments/commentRss/202905.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/202905.html闃呰鍏ㄦ枃

Mato_No1 2013-08-31 23:39 鍙戣〃璇勮
]]>
銆怉HOI2013澶嶄粐銆戝啀鐪婬DU2871http://www.shnenglu.com/MatoNo1/archive/2012/11/25/195647.htmlMato_No1Mato_No1Sun, 25 Nov 2012 06:54:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2012/11/25/195647.htmlhttp://www.shnenglu.com/MatoNo1/comments/195647.htmlhttp://www.shnenglu.com/MatoNo1/archive/2012/11/25/195647.html#Feedback0http://www.shnenglu.com/MatoNo1/comments/commentRss/195647.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/195647.html鍘熼鍦板潃
鏈矙鑼跺幓騫存浘緇忕敤鍙岀嚎孌墊爲鐨勬柟娉曟崏浜嗚繖棰橈紙璇﹁榪欓噷錛夛紝鏈榪戦噸鏂板瑙嗚繖棰樺彂鐜幫紝鍊熷姪騫寵 鏍戯紝鍙互寰楀埌鏇寸畝鍗曠殑鏂規硶銆?br />
棰樼洰澶ф剰錛?br />鏈変竴涓暱搴︿負N鐨勫唴瀛樻潯錛屾瘡涓綅緗殑鐘舵佹湁鍗犵敤鍜屼笉鍗犵敤涓ょ錛屾湁4縐嶆搷浣滐細
錛?錛塕eset錛氭竻絀烘墍鏈夊唴瀛橈紙鍗沖皢鎵鏈変綅緗殑鐘舵佹敼涓轟笉鍗犵敤錛屽垹闄ゆ墍鏈夊唴瀛樺潡錛夛紱
錛?錛塏ew x錛氱敵璇蜂竴涓柊鐨勫唴瀛樺潡錛屽嵆鎵懼埌涓涓暱搴︿負x鐨勮繛緇笉鍗犵敤浣嶇疆鍖洪棿錛屽皢瀹冧滑鏍囪涓哄崰鐢紝鑻ユ湁澶氫釜榪欐牱鐨勫尯闂達紝鍙栨渶宸﹁竟鐨勶紝鑻ユ湪鏈夎緭鍑篟eject New錛?br />錛?錛塅ree x錛氬湪宸茬敵璇風殑鍐呭瓨鍧椾腑錛屾壘鍒板寘鍚綅緗畑鐨勫茍閲婃斁錛堝皢璇ュ唴瀛樺潡鍒犻櫎錛屽悓鏃跺叾鍗犵敤鐨勬墍鏈変綅緗敼涓轟笉鍗犵敤錛夛紝鑻ユ湪鏈夊唴瀛樺潡鍖呭惈浣嶇疆x錛屽垯杈撳嚭Reject Free錛?br />錛?錛塆et x錛氭壘鍑哄凡鐢寵鐨勫唴瀛樺潡涓紝宸﹁搗絎瑇涓紝騫惰緭鍑哄叾宸︾鐐癸紱鑻ュ凡鐢寵鐨勫唴瀛樺潡鏁扮洰涓嶈凍x涓紝鍒欒緭鍑篟eject Get銆?br />
鍙互鍙戠幇錛屾瘡涓凡緇忕敵璇風殑鍐呭瓨鍧楀敖綆′唬琛ㄤ竴孌靛尯闂達紝浣嗕粛鐒舵槸鐙珛鐨勫崟浣嶏紝鍥犳錛屽彲浠ユ妸鍐呭瓨鍧楀綋鎴愮粨鐐癸紝鐢ㄥ鉤琛℃爲緇存姢錛堝叧閿瓧涓哄唴瀛樺潡鐨勫乏绔偣浣嶇疆錛夛紝New鎿嶄綔涓唴瀛樺潡鐨勬彃鍏ヤ笌Free鎿嶄綔涓唴瀛樺潡鐨勫垹闄ゅ潎鍦ㄦ騫寵 鏍戝唴榪涜錛孯eset鎿嶄綔鍙渶瑕佸皢鏁存5鏍戦攢姣佸嵆鍙?br />闂鏄紝鍦∟ew鎿嶄綔涓紝闇瑕佹壘鍒頒竴涓暱搴︿負x鐨勮繛緇笉鍗犵敤鍖洪棿錛岃岃繛緇殑涓嶅崰鐢ㄥ尯闂村茍涓嶆槸鐙珛鐨勫崟浣嶏紝鍥犳闇瑕佷嬌鐢ㄧ嚎孌墊爲緇存姢銆傚湪綰挎鏍戜腑錛岄渶瑕佺淮鎶?lt;1>緇撶偣鍖洪棿鍐呮渶闀胯繛緇笉鍗犵敤鍧楃殑闀垮害錛?lt;2>緇撶偣鍖洪棿宸︾銆佸彸绔繛緇笉鍗犵敤鍧楃殑闀垮害錛堝惁鍒欐棤娉曠淮鎶?lt;1>錛夛紱鍚屾椂錛岀敱浜庡湪New鎿嶄綔涓渶瑕佸尯闂存暣浣撴敼鍗犵敤錛孎ree鎿嶄綔涓張闇瑕佸尯闂存暣浣撴敼涓嶅崰鐢紝鎵浠ュ簲褰撴敮鎸佹暣浣撴敼鍊肩殑鏍囪錛屽浜嶳eset鎿嶄綔錛屽彧闇瑕佸叏閮ㄤ綅緗敼涓嶅崰鐢ㄥ嵆鍙紙涓嶈兘閲嶆柊寤烘爲錛侊紒錛夛紱

榪欐牱錛屽埄鐢ㄤ竴媯靛鉤琛℃爲鍔犱竴媯電嚎孌墊爲錛屽氨鍙互寰楀埌涓涓緢綆鍗曠殑鏂規硶浜嗭紙浠g爜閲忔槸鍙屽鉤琛℃爲鎴栧弻綰挎鏍戠殑涓鍗婂乏鍙籌級錛?br />
榪欓鐨勫惎紺烘槸錛屽湪瑙e喅鏁版嵁緇撴瀯緇熻綾婚鐨勬椂鍊欙紝鍒板簳閫夌敤浠涔堟牱鐨勬暟鎹粨鏋勶紝鏄湁璁茬┒鐨勶紝鍥犱負瀹冨皢鐩存帴褰卞搷鍒扮紪紼嬪鏉傚害銆備竴鑸潵璇達紝綰挎鏍戞瘮騫寵 鏍戝ソ鍐欙紝浣嗘槸瀵規湰棰樿岃█錛屽弻綰挎鏍戝弽鑰屼笉濡傚鉤琛℃爲鍔犵嚎孌墊爲濂藉啓錛岃繖鏄洜涓哄浜庡唴瀛樺潡浣跨敤騫寵 鏍戠淮鎶ゆ瘮浣跨敤綰挎鏍戠淮鎶ゆ洿濂姐傚湪浠ュ悗鍋氳繖縐嶉鐨勬椂鍊欙紝瑕佸鎯充竴涓嬶紝鎵懼埌綆渚挎柟娉曘?br />

Mato_No1 2012-11-25 14:54 鍙戣〃璇勮
]]>
緇堜簬浼氬啓鍔ㄦ佹爲浜?/title><link>http://www.shnenglu.com/MatoNo1/archive/2012/02/26/166547.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sun, 26 Feb 2012 05:03:00 GMT</pubDate><guid>http://www.shnenglu.com/MatoNo1/archive/2012/02/26/166547.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/166547.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2012/02/26/166547.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/166547.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/166547.html</trackback:ping><description><![CDATA[銆愯儗鏅?br />2012騫?鏈?9鏃ワ紝鏈矙鑼跺紑濮嬬湅鍔ㄦ佹爲璁烘枃錛屾悶鎳備簡涓浜涳紱<br />2012騫?鏈?0鏃ワ紝寮濮嬪啓鍔ㄦ佹爲錛屼嬌鐢ㄧ殑棰樻槸QTREE錛岃姳浜嗘暣鏁翠竴澶╂椂闂存葷畻鍐欏畬錛屼氦涓婂幓錛孴LE……<br />2012騫?鏈?1鏃ワ紝鍙堣皟浜嗕竴澶╋紝瀵規媿浜?00+緇勯殢鏈烘暟鎹兘鐬棿鍑鴻В錛屼氦涓婂幓錛岃繕鏄疶LE……<br />2012騫?鏈?鏃ワ紝WC2012錛宖anhq666璁插姩鎬佹爲錛屽張鎼炴噦浜嗕竴鐐癸紝浜庢槸褰撳ぉ鏅氫笂鍥炴埧闂翠互鍚庡氨寮濮嬬戶緇皟錛屼氦涓婂幓錛孴LE……<br />2012騫?鏈?鏃ワ紝鏅氫笂緇х畫璋僎TREE錛孴LE……<br />鍦ㄦ寫鎴樺姩鎬佹爲N嬈″け璐ヤ箣鍚庯紝鏈矙鑼舵槰澶╁啀嬈″幓鎸戞垬鍔ㄦ佹爲……榪欐鎹簡涓涓錛?a title="BZOJ2002" >BZOJ2002</a>錛堜紶璇翠腑鐨勫姩鎬佹爲妯℃澘棰橈級<br />涓寮濮嬭繕鏄疶LE浜嗭紝涓嶈繃鍚庢潵鎶婃暟鎹悶鍒版墜浠ュ悗錛屽彂鐜癟LE鐨勫師鍥犲茍涓嶆槸甯告暟澶э紝鑰屾槸姝誨驚鐜簡錛屾渶鍚庯紝緇忚繃2h+鐨勮皟璇曪紝鎬葷畻鎵懼埌浜嗛敊璇紙鏈夊ソ鍑犲錛夛紝緇堜簬AC浜?#8230;…<br /><br />銆愬叧浜嶣ZOJ2002銆?br />浠庢瘡涓偣i寰(i+Ki)榪炰竴鏉¤竟錛屽鏋?i+Ki)涓嶅瓨鍦ㄥ垯寰涓涓檮鍔犵殑緇撶偣錛堟湰娌欒尪鐨勪唬鐮佷腑涓?鍙風偣錛屽洜涓?鍙風偣鏄笉鑳戒嬌鐢ㄧ殑錛夎繛涓鏉¤竟錛岃繖鏍峰氨鏄竴媯墊爲錛堥櫎1鍙風偣澶栵紝姣忎釜鐐規湁涓斿彧鏈変竴涓悗緇?#8230;…錛夛紝鐒跺悗錛岄棶棰樹腑鐨勪袱縐嶆搷浣滃氨鏄?#8220;鏀規帴”鍜?#8220;璇㈤棶鍒版牴鐨勮窛紱?#8221;錛屽彲浠ョ敤鍔ㄦ佹爲鎼烇紱<br /><br />銆愪唬鐮併?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 </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> re(i, n) for (int i=0; i<n; i++)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> re1(i, n) for (int i=1; i<=n; i++)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> re2(i, l, r) for (int i=l; i<r; i++)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> re3(i, l, r) for (int i=l; i<=r; i++)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> rre(i, n) for (int i=n-1; i>=0; i--)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> rre1(i, n) for (int i=n; i>0; i--)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> rre2(i, r, l) for (int i=r-1; i>=l; i--)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> rre3(i, r, l) for (int i=r; i>=l; i--)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">const</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> MAXN </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">200004</span><span style="color: #000000; ">, INF </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">~</span><span style="color: #000000; ">0U</span><span style="color: #000000; "> </span><span style="color: #000000; ">>></span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> node {<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> c[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">], p, sz;<br />    </span><span style="color: #0000FF; ">bool</span><span style="color: #000000; "> rf, d;<br />} T[MAXN];<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> n;<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> sc(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> _p, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> _c, </span><span style="color: #0000FF; ">bool</span><span style="color: #000000; "> _d)<br />{<br />    T[_p].c[_d] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> _c; T[_c].p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> _p; T[_c].d </span><span style="color: #000000; ">=</span><span style="color: #000000; "> _d;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> upd(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> No)<br />{<br />    T[No].sz </span><span style="color: #000000; ">=</span><span style="color: #000000; "> T[T[No].c[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]].sz </span><span style="color: #000000; ">+</span><span style="color: #000000; "> T[T[No].c[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]].sz </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> rot(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> No)<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> T[No].p; </span><span style="color: #0000FF; ">bool</span><span style="color: #000000; "> d </span><span style="color: #000000; ">=</span><span style="color: #000000; "> T[No].d;<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (T[p].rf) {T[p].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; T[No].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; T[No].p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> T[p].p;} </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> sc(T[p].p, No, T[p].d);<br />    sc(p, T[No].c[</span><span style="color: #000000; ">!</span><span style="color: #000000; ">d], d); sc(No, p, </span><span style="color: #000000; ">!</span><span style="color: #000000; ">d); upd(p);<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> splay(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> No)<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> p; </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (</span><span style="color: #000000; ">!</span><span style="color: #000000; ">T[No].rf) </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (T[p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> T[No].p].rf) rot(No); </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (T[No].d </span><span style="color: #000000; ">==</span><span style="color: #000000; "> T[p].d) {rot(p); rot(No);} </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> {rot(No); rot(No);} upd(No);<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> access(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> x)<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> tmp </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">do</span><span style="color: #000000; "> {<br />        splay(x); T[T[x].c[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; T[tmp].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; sc(x, tmp, </span><span style="color: #000000; ">1</span><span style="color: #000000; ">); upd(x); tmp </span><span style="color: #000000; ">=</span><span style="color: #000000; "> x; x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> T[x].p;<br />    } </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (x);<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> cut(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> x)<br />{<br />    access(x); splay(x); T[T[x].c[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; T[T[x].c[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]].p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; sc(x, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">); upd(x);<br />}<br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> join(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> x, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> p)<br />{<br />    access(x); T[x].p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> p;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> m, x, y, z;<br />    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; ">&</span><span style="color: #000000; ">n); n</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />    re3(i, </span><span style="color: #000000; ">2</span><span style="color: #000000; ">, n) {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; ">&</span><span style="color: #000000; ">x); T[i].sz </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; T[i].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (i </span><span style="color: #000000; ">+</span><span style="color: #000000; "> x </span><span style="color: #000000; "><=</span><span style="color: #000000; "> n) T[i].p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> i </span><span style="color: #000000; ">+</span><span style="color: #000000; "> x; </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> T[i].p </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;}<br />    T[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].sz </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; T[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].rf </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; T[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">].sz </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    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; ">&</span><span style="color: #000000; ">m);<br />    re(i, m) {<br />        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; ">&</span><span style="color: #000000; ">x);<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (x </span><span style="color: #000000; ">==</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">) {<br />            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; ">&</span><span style="color: #000000; ">y); y </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />            access(y); splay(y); printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, T[T[y].c[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]].sz);<br />        } </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> {<br />            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; ">&</span><span style="color: #000000; ">y, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">z); y </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />            cut(y); </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (y </span><span style="color: #000000; ">+</span><span style="color: #000000; "> z </span><span style="color: #000000; "><=</span><span style="color: #000000; "> n) join(y, y </span><span style="color: #000000; ">+</span><span style="color: #000000; "> z); </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> join(y, </span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />        }<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000;">;<br />}<br /></span></div><br />銆愭槗鐤電偣銆?br />錛?錛夋敞鎰忎竴涓偣鐨勭埗緇撶偣p鏈変袱縐嶅彲鑳斤細濡傛灉璇ョ粨鐐規槸鏌愭5浼稿睍鏍戠殑鏍圭粨鐐瑰垯p涓哄畠閫氳繃杞昏竟榪炲悜鐨勫彟涓媯典幾灞曟爲涓殑鏌愪竴涓偣鐨勭紪鍙鳳紙鍦ㄥ師鏍戜腑錛屽氨鏄緇撶偣鎵鍦ㄤ幾灞曟爲浠h〃鐨勯摼鐨勬渶涓婂眰鐨勯偅涓妭鐐圭殑鐖剁粨鐐癸級錛屽惁鍒欎負璇ョ粨鐐瑰湪浼稿睍鏍戜腑鐨勭埗緇撶偣緙栧彿錛堥氳繃閲嶈竟鐩歌繛錛夛紱<br />錛?錛夊湪鏀規帴鏃跺垹闄よ竟鐨勬椂鍊欙紝濡傛灉鍒犻櫎鐨勬槸杞昏竟鍒欑洿鎺ユ妸鐖剁粨鐐硅涓?鍗沖彲錛屽鏋滄槸閲嶈竟鍒欒sc涓涓嬪啀灝嗙埗緇撶偣璁句負0錛?br />錛?錛塺ot閲岄潰鏈変竴涓湴鏂瑰緢鍏抽敭錛屾瀬鏄撶柕錛佸氨鏄鏋減鏄幾灞曟爲鐨勬牴緇撶偣錛屽垯闄や簡No鐨剅f鏀逛負1錛宲鐨剅f鏀逛負0涔嬪錛岃繕瑕佹妸No鐨勭埗緇撶偣璁句負p鐨勭埗緇撶偣錛?br />錛?錛夋湰棰樹腑涓嶆秹鍙婃暣媯靛ぇ鏍戠殑鏍癸紙灝辨槸root錛夛紝濡傛灉闇瑕乺oot錛屽垯rot涓繕瑕佸姞涓鍙ワ細if (root == p) root = No;<br />錛?錛塩ut閲岄潰鏈変竴縐嶇畝渚垮啓娉曪紙涓嶉渶瑕佹壘鍒皒鐨勭埗緇撶偣鐨勶級錛氬厛access(x)錛屽皢x浼稿睍鍒版牴涔嬪悗錛寈鍙婂叾鍙沖瓙鏍戝氨鏄師鏍戜腑浠涓烘牴鐨勫瓙鏍戯紝宸﹀瓙鏍戝氨鏄叾瀹冮儴鍒嗭紝鎵浠ョ洿鎺ュ皢x涓庡叾宸﹀瓙緇撶偣鏂紑鍗沖彲錛堟敞鎰忔柇寮鐨勬槸閲嶈竟鎵浠ヨsc涓涓嬶紝鍐嶅皢x鐨勫乏瀛愮粨鐐圭殑鐖剁粨鐐硅涓?銆乺f璁句負1錛屽啀upd涓涓嬶級錛?br />錛?錛変竴瀹氳鎼炴竻妤歳f鐨勫彉鍖栵紙璇ユ敼鏃朵竴瀹氳鏀癸紒錛?br /><br />鏈鍚庯紝鏀句笂fanhq666瓚呯駭澶х鐨勬葷粨錛?br /><a title="0" >0</a><a title="1" >1</a><img src ="http://www.shnenglu.com/MatoNo1/aggbug/166547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2012-02-26 13:03 <a href="http://www.shnenglu.com/MatoNo1/archive/2012/02/26/166547.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏂板瀷LCA綆楁硶鍙婃爲鐨勮礬寰勫墫鍒嗘ā鏉挎葷粨http://www.shnenglu.com/MatoNo1/archive/2012/01/14/164163.htmlMato_No1Mato_No1Sat, 14 Jan 2012 04:34:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2012/01/14/164163.htmlhttp://www.shnenglu.com/MatoNo1/comments/164163.htmlhttp://www.shnenglu.com/MatoNo1/archive/2012/01/14/164163.html#Feedback1http://www.shnenglu.com/MatoNo1/comments/commentRss/164163.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/164163.html榪欑綆楁硶鍙互鍦ㄤ粎浣跨敤鏍戠殑璺緞鍓栧垎棰勫鐞嗕腑姹傚嚭鐨凞EP鍜孶P鏉ユ眰浠繪剰涓ょ偣鐨凩CA錛屾椂闂村鏉傚害涓篛(log2N)錛屼笉闇瑕佸崟鐙殑棰勫鐞嗐?br />姝ラ錛堝亣璁炬眰a0銆乥0涓ょ偣鐨凩CA錛夛細
錛?錛夎嫢UP[a0]==UP[b0]錛屽垯a0銆乥0浣嶄簬鍚屼竴鏉¢噸閾句笂錛屾樉鐒禷0銆乥0涓繁搴﹀皬鐨勯偅涓氨鏄疞CA浜嗭紝榪斿洖緇撴灉錛岀粨鏉燂紱
錛?錛夎嫢UP[a0]!=UP[b0]涓擠EP[UP[a0]]>=DEP[UP[b0]]錛屽垯LCA涓嶅彲鑳藉湪a0鎵鍦ㄧ殑閭f潯閲嶉摼涓?/strong>銆傝瘉鏄庯細鑻CA鍦╝0鎵鍦ㄧ殑閲嶉摼涓婏紝鍒橴P[a0]蹇呯劧涔熸槸a0銆乥0鐨勫叕鍏辯鍏堬紝涔熷氨鏄疷P[a0]鏄痓0鐨勭鍏堛傜敱浜嶶P[a0]鐨勬繁搴﹀ぇ浜庣瓑浜嶶P[b0]錛岃嫢DEP[UP[a0]]>DEP[b0]錛屽垯UP[a0]鏄劇劧涓嶅彲鑳芥槸b0鐨勭鍏堬紝鍚﹀垯錛屽湪b0鎵鍦ㄧ殑閲嶉摼涓婂繀鐒跺瓨鍦ㄤ竴涓偣C錛屾弧瓚矰EP[C]=DEP[UP[a0]]錛屾樉鐒訛紝C涔熸槸b0鐨勭鍏堬紝榪欏氨璇存槑鍦ㄦ爲涓悓涓娣卞害澶勫瓨鍦ㄤ袱涓笉鍚岀殑緇撶偣錛屽畠浠兘鏄痓0鐨勭鍏堬紝榪欐槸涓嶅彲鑳界殑錛屾墍浠ワ紝LCA涓嶅彲鑳藉湪a0鎵鍦ㄩ噸閾句笂銆傞偅涔堬紝a0灝卞彲浠ヤ笂婧埌UP[a0]鐨勭埗緇撶偣澶勶紙涔熷氨鏄疎[FA[UP[a0]]].a錛夛紝b0涓嶅姩錛岀劧鍚庣戶緇垽鏂紱
錛?錛夎嫢UP[a0]!=UP[b0]涓擠EP[UP[a0]]<DEP[UP[b0]]錛屽垯LCA涓嶅彲鑳藉湪b0鎵鍦ㄧ殑閲嶉摼涓婏紝灝哹0涓婃函鍒癊[FA[UP[b0]]].a錛宎0涓嶅姩錛岀戶緇垽鏂?br />鐢變簬a0銆乥0鏈澶氫笂婧疧(log2N)嬈★紝鎵浠ヨ綆楁硶涓瀹氳兘鍦∣(log2N)鏃墮棿鍐呮眰鍑篖CA(a0, b0)銆?br />璇ョ畻娉曠殑搴旂敤寰堝箍錛屼笉鍏夊彲浠ュ湪鏍戠殑璺緞鍓栧垎涓揩閫熸眰鍑篖CA錛岀簿綆浠g爜錛屽悓鏃朵篃鍑忓皯浜嗕竴浜涙椂闂達紙鍥犱負瀹冧笉闇瑕佸儚RMQ閭f牱榪涜棰勫鐞嗭級錛岃屼笖錛屽湪涓鑸殑姹侺CA闂涓紝涔熷彲浠ュ厛鍓栧垎姹傚嚭UP鍐嶆眰LCA銆?br />浠g爜錛?
int LCA(int a, int b)
{
    
while (1) {
        
if (UP[a] == UP[b]) return DEP[a] <= DEP[b] ? a : b;
        
else if (DEP[UP[a]] >= DEP[UP[b]]) a = E[FA[UP[a]]].a; else b = E[FA[UP[b]]].a;
    }
}

銆?銆戞爲鐨勮礬寰勫墫鍒嗘ā鏉挎葷粨錛?br />錛?錛夐澶勭悊閮ㄥ垎錛氱敱浜庨噰鐢ㄦ柊鍨婰CA綆楁硶錛堟敞鎰忥紝姹侺CA鐨勮繃紼嬪啓鎴愪笓闂ㄧ殑鍑芥暟錛夛紝鎵浠ワ紝鍘熸潵棰勫鐞嗛儴鍒嗙殑鍚?姝ラ兘涓嶉渶瑕佷簡錛屼篃灝辨槸鍙鍓?姝ワ細絎竴姝ュ緩鏈夋牴鏍戞眰鍑篎A銆丏EP錛涚浜屾姹傚嚭SZ鍒掑垎杞婚噸杈癸紱絎笁姝ユ壘閲嶉摼寤虹嚎孌墊爲姹傚嚭UP銆乷rd銆乼ot鍜宺oot銆傞偅浜涗負浜嗘眰RMQ鑰岃緗殑鏁扮粍涔熶笉闇瑕佷簡銆?br />錛?錛夋搷浣滈儴鍒嗭細闅劇偣鍦ㄤ簬涓婃函榪囩▼鍜岃鎺ャ傝寰呮搷浣滅殑璺緞涓篴0->b0錛堟敞鎰忔槸鏈夊悜鐨勶紝鏃犲悜鐨勪篃鍙互褰撴垚鏈夊悜鐨勫鐞嗭級錛孡CA0=LCA(a0, b0)錛?/span>
瀵逛簬鐐規潈鍨嬬殑鏍戯紝a0->LCA0鐨勮繃紼嬮渶瑕佸寘鍚?/span>LCA0錛岃?/span>b0->LCA0鐨勮繃紼嬩笉鑳藉寘鍚?/span>LCA0銆傚洜姝ゅ綋b0==LCA0鏃訛紝絎簩姝ュ簲璇ヤ粈涔堜簨閮戒笉鍋氾紝鎵浠ヨ鐗瑰垽錛涙澶栵紝濡傛灉N==1錛堟爲涓彧鏈変竴涓粨鐐癸級錛屼負浜嗛槻姝㈠紩鐢ㄦ牴鐨勭埗緇撶偣錛屼篃闇瑕佺洿鎺ョ壒鍒ゆ帀錛屾墍浠ワ紝涓婃函榪囩▼鍙互鍒嗕互涓?姝ワ細
<1>鐗瑰垽錛氳嫢n=1錛堟鏃跺繀鐒舵湁a0==b0==0錛夛紝鐩存帴鎿嶄綔0鍙風粨鐐癸紝緇撴潫錛?br /><2>(a0->LCA)鑻0鏄埗杈規槸杞昏竟鐨勫彾緇撶偣錛屽垯鍗曠嫭澶勭悊a0錛屾渶鏂扮偣璁句負a0錛宎0璺沖埌a0鐨勭埗緇撶偣澶勫紑濮嬶紝鍚﹀垯浠巃0寮濮嬶紙涓婃函錛夈備笂婧粓姝㈡潯浠朵負DEP[a0]<DEP[LCA0]鎴栬呬笂婧埌鏍圭粨鐐癸紝姣忔澶勭悊鏃訛紝璁綾=”UP[a0]涓嶈秴瓚奓CA?UP[a0]:LCA"錛屽[c, a0]孌靛鐞嗭紙l0=ord[c], r0=ord[a0]錛夛紝鍐嶅皢a0涓婃函鍒癱鐨勭埗緇撶偣澶勶紙鑻鏄牴緇撶偣鍒欓鍑猴級錛涘鐞嗘椂錛岀嚎孌墊爲涓褰曠殑鎵鏈夋湁鍚戠殑錛堜粠宸﹀埌鍙崇殑錛変俊鎭兘瑕佸弽鍚戯紱琛旀帴鏃跺簲涓嶆柇鍚戝彸琛旀帴錛?br /><3>(b0->LCA)涓?lt;2>綾諱技錛屼袱涓笉鍚岀偣錛氫竴鏄湁鍚戠殑淇℃伅涓嶈鍙嶅悜錛岃鎺ユ椂搴斾笉鏂悜宸﹁鎺ワ紱浜屾槸鑻==LCA錛屽垯l0=ord[c]+1錛?br /><4>鏈鍚庡皢<2>涓拰<3>涓緱鍒扮殑涓や釜琛旀帴閾懼啀琛旀帴涓涓嬪嵆鍙紱

瀵逛簬杈規潈鍨嬬殑鏍戯紝a0->LCA0鐨勮繃紼嬪拰b0->LCA0鐨勮繃紼嬮兘瑕佸寘鍚獿CA0寮曞嚭鐨勮竟錛宐0==LCA0浠ュ強N==1鏃朵笉闇瑕佺壒鍒わ紙鍥犱負瀹冧滑浼氳嚜鍔ㄥ湴浠涔堜簨閮戒笉鍋氾級錛涘湪澶勭悊榪囩▼涓紝l0=ord[c], r0=ord[a0]-1錛涜鍒嗚交杈瑰拰閲嶉摼鍒嗗埆澶勭悊錛涙瘡嬈0涓婃函鍒癱鑰屼笉鏄痗鐨勭埗緇撶偣澶勶紱緇堟鏉′歡涓篋EP[a0]<=DEP[LCA0]銆?br />
妯℃澘棰橈細PKU2831錛堝姩鎬佹渶灝忕敓鎴愭爲闂錛岄渶瑕佹秹鍙婂埌鏈灝忕敓鎴愭爲涓袱鐐逛箣闂磋礬寰勪笂鐨勬渶澶ц竟鏉冿紝鐢ㄦ爲鐨勮礬寰勫墫鍒嗐傚叾瀹炴湰棰樻湁紱葷嚎綆楁硶錛屼笉闇瑕佹爲鐨勮礬寰勫墫鍒嗭級
#include <iostream>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
const int MAXN = 1001, MAXM = 100001, INF = ~0U >> 2;
struct _edge {
    
int a, b, w;
} _E[MAXM], _E2[MAXM];
struct edge {
    
int a, b, w, pre, next;
    
bool Z;
} E0[MAXN 
<< 2], E[MAXN << 2];
struct node {
    
int maxw, lch, rch;
} T[MAXN 
<< 2];
int n, _m, m0, m, N, u[MAXN], Q[MAXN], FA[MAXN], DEP[MAXN], SZ[MAXN], UP[MAXN], ord[MAXN], w0[MAXN], tot[MAXN], root[MAXN], l0, r0, x0, res;
bool vst[MAXN];
void init_d()
{
    re(i, n) E0[i].pre 
= E[i].pre = E0[i].next = E[i].next = i;
    m0 
= m = n;
}
void add_edge0(int a, int b, int w)
{
    E0[m0].a 
= a; E0[m0].b = b; E0[m0].w = w; E0[m0].pre = E0[a].pre; E0[m0].next = a; E0[a].pre = m0; E0[E0[m0].pre].next = m0++;
    E0[m0].a 
= b; E0[m0].b = a; E0[m0].w = w; E0[m0].pre = E0[b].pre; E0[m0].next = b; E0[b].pre = m0; E0[E0[m0].pre].next = m0++;
}
void add_edge(int a, int b, int w)
{
    E[m].a 
= a; E[m].b = b; E[m].w = w; E[m].Z = 0; E[m].pre = E[a].pre; E[m].next = a; E[a].pre = m; E[E[m].pre].next = m++;
}
int cmp(const void *s1, const void *s2)
{
    
return ((_edge *)s1)->- ((_edge *)s2)->w;
}
int UFS_find(int x)
{
    
int r = x, tmp; while (u[r] >= 0) r = u[r]; while (u[x] >= 0) {tmp = u[x]; u[x] = r; x = tmp;} return r;
}
void UFS_union(int x1, int x2)
{
    
if (u[x1] >= u[x2]) {u[x2] += u[x1]; u[x1] = x2;} else {u[x1] += u[x2]; u[x2] = x1;}
}
int mkt(int l, int r)
{
    
int No = ++N;
    
if (l == r) {T[No].maxw = w0[l]; T[No].lch = T[No].rch = 0;} else {
        
int mid = l + r >> 1, l_r = mkt(l, mid), r_r = mkt(mid + 1, r);
        T[No].maxw 
= T[T[No].lch = l_r].maxw >= T[T[No].rch = r_r].maxw ? T[l_r].maxw : T[r_r].maxw;
    }
    
return No;
}
void prepare()
{
    qsort(_E2, _m, 
sizeof(_E2[0]), cmp);
    re(i, n) u[i] 
= -1;
    
int a, b, r1, r2, total = 0, maxsz, x, n0;
    re(i, _m) {
        a 
= _E2[i].a; b = _E2[i].b; r1 = UFS_find(a); r2 = UFS_find(b);
        
if (r1 != r2) {UFS_union(r1, r2); add_edge0(a, b, _E2[i].w); if (++total == n - 1break;}
    }
    re(i, n) vst[i] 
= 0; Q[0= DEP[0= N = 0; vst[0= 1; FA[0= -1;
    
for (int front=0, rear=0; front<=rear; front++) {
        a 
= Q[front];
        
for (int p=E0[a].next; p != a; p=E0[p].next) {
            b 
= E0[p].b;
            
if (!vst[b]) {FA[b] = m; DEP[b] = DEP[a] + 1; vst[b] = 1; Q[++rear] = b; add_edge(a, b, E0[p].w);}
        }
    }
    rre(i, n) {
        a 
= Q[i]; SZ[a] = 1; maxsz = 0;
        
for (int p=E[a].next; p != a; p=E[p].next) {
            b 
= E[p].b; SZ[a] += SZ[b]; if (SZ[b] > maxsz) {maxsz = SZ[b]; x = p;}
        }
        
if (SZ[a] > 1) E[x].Z = 1;
    }
    UP[
0= ord[0= 0;
    re2(i, 
1, n) {
        a 
= Q[i]; int p = FA[a]; if (E[p].Z) {UP[a] = UP[E[p].a]; ord[a] = ord[E[p].a] + 1;} else {UP[a] = a; ord[a] = 0;}
        
if (SZ[a] == 1 && E[FA[a]].Z) {
            b 
= UP[a]; n0 = ord[a]; for (int j=a; j!=b; j=E[FA[j]].a) w0[--n0] = E[FA[j]].w;
            tot[b] 
= ord[a]; root[b] = mkt(0, ord[a] - 1);
            
for (int j=a; j!=b; j=E[FA[j]].a) {tot[j] = tot[b]; root[j] = root[b];}
        }
    }
}
int LCA(int a, int b)
{
    
while (1) {
        
if (UP[a] == UP[b]) return DEP[a] <= DEP[b] ? a : b;
        
else if (DEP[UP[a]] >= DEP[UP[b]]) a = E[FA[UP[a]]].a; else b = E[FA[UP[b]]].a;
    }
}
void opr0(int l, int r, int No)
{
    
if (l >= l0 && r <= r0) {if (T[No].maxw > res) res = T[No].maxw;} else {
        
int mid = l + r >> 1;
        
if (mid >= l0) opr0(l, mid, T[No].lch);
        
if (mid < r0) opr0(mid + 1, r, T[No].rch);
    }
}
int main()
{
    
int P, s, a0, b0, w0, LCA0, c;
    scanf(
"%d%d%d"&n, &_m, &P); init_d();
    re(i, _m) {
        scanf(
"%d%d%d"&a0, &b0, &w0);
        _E[i].a 
= _E2[i].a = --a0; _E[i].b = _E2[i].b = --b0; _E[i].w = _E2[i].w = w0;
    }
    prepare();
    re(i, P) {
        scanf(
"%d%d"&s, &w0); a0 = _E[--s].a; b0 = _E[s].b; LCA0 = LCA(a0, b0);
        res 
= -INF;
        
while (DEP[a0] > DEP[LCA0]) {
            
if (E[FA[a0]].Z) {
                
if (DEP[UP[a0]] >= DEP[LCA0]) c = UP[a0]; else c = LCA0;
                l0 
= ord[c]; r0 = ord[a0] - 1; opr0(0, tot[a0] - 1, root[a0]); a0 = c;
            } 
else {
                
if (E[FA[a0]].w > res) res = E[FA[a0]].w;
                a0 
= E[FA[a0]].a;
            }
        }
        
while (DEP[b0] > DEP[LCA0]) {
            
if (E[FA[b0]].Z) {
                
if (DEP[UP[b0]] >= DEP[LCA0]) c = UP[b0]; else c = LCA0;
                l0 
= ord[c]; r0 = ord[b0] - 1; opr0(0, tot[b0] - 1, root[b0]); b0 = c;
            } 
else {
                
if (E[FA[b0]].w > res) res = E[FA[b0]].w;
                b0 
= E[FA[b0]].a;
            }
        }
        puts(res 
>= w0 ? "Yes" : "No");
    }
    
return 0;
}

濂戒簡錛屽浜庢ā鏉夸篃灝卞埌姝や負姝簡錛屾帴涓嬫潵璇ユ悶搴旂敤浜嗐?img src ="http://www.shnenglu.com/MatoNo1/aggbug/164163.html" width = "1" height = "1" />

Mato_No1 2012-01-14 12:34 鍙戣〃璇勮
]]>
銆愭爲鐨勮礬寰勫墫鍒嗐戠偣鏉冨瀷鐨勫鐞嗗姙娉曘佽礬寰勭殑琛旀帴浠ュ強涓浜涚粏鑺傞棶棰?/title><link>http://www.shnenglu.com/MatoNo1/archive/2012/01/12/164076.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Thu, 12 Jan 2012 12:44:00 GMT</pubDate><guid>http://www.shnenglu.com/MatoNo1/archive/2012/01/12/164076.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/164076.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2012/01/12/164076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/164076.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/164076.html</trackback:ping><description><![CDATA[     鎽樿: 銆愪緥棰樸慬SDOI2011]鏌撹壊錛堟敞錛氭暟鎹寖鍥存湪鏈変氦浠o紝搴斾負錛氱偣鏁癗<=105錛屾搷浣滄暟M<=105錛屾墍鏈夌殑棰滆壊C涓烘暣鏁頒笖鍦╗0, 109]涔嬮棿銆備竴銆佹爲鐨勮礬寰勫墫鍒嗗綋涓偣鏉冨瀷錛堢偣涓婃湁鏉冨艱岃竟涓婃湪鏈夛級鐨勫鐞嗗姙娉曪細錛?錛夋壘閲嶉摼寤虹嚎孌墊爲鐨勬椂鍊欙紝w0涓瓨鍌╰ot+1涓暟錛屼負璇ラ噸閾捐嚜涓婅屼笅鐨勫悇鐐圭殑鏉冨鹼紙渚嬮涓負棰滆壊錛夛紱錛?錛夐櫎浜嗙埗杈規槸杞昏竟鐨勫彾緇撶偣涔嬪錛屾爲涓殑姣忎釜緇撶偣閮藉睘浜庝笖浠呭睘浜庝竴鏉¢噸閾撅紙鏍規嵁瀹氫箟寰?..  <a href='http://www.shnenglu.com/MatoNo1/archive/2012/01/12/164076.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/MatoNo1/aggbug/164076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2012-01-12 20:44 <a href="http://www.shnenglu.com/MatoNo1/archive/2012/01/12/164076.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>QTREE鈥斺旀爲鐨勮礬寰勫墫鍒嗭紙鍙堢О鏍戦摼鍓栧垎錛?/title><link>http://www.shnenglu.com/MatoNo1/archive/2012/01/03/163491.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Tue, 03 Jan 2012 08:41:00 GMT</pubDate><guid>http://www.shnenglu.com/MatoNo1/archive/2012/01/03/163491.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/163491.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2012/01/03/163491.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/163491.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/163491.html</trackback:ping><description><![CDATA[     鎽樿: 鍘熼鍦板潃銆愭湁鍏蟲爲鐨勮礬寰勫墫鍒嗙殑涓滀笢鍦ㄧ綉涓婁粙緇嶇殑澶浜?#8230;…銆戝父瑙佺殑璺緞鍓栧垎鐨勬柟娉曟槸杞婚噸杈瑰墫鍒嗭紝鍗蟲妸鏍戜腑鐨勮竟鍒嗕負杞婚噸涓ら儴鍒嗭紝鏂規硶錛氳SZ[i]涓轟互i涓烘牴鐨勫瓙鏍戠殑澶у皬錛堢粨鐐規繪暟錛夛紝鍒欒嫢鐐箈涓嶆槸鍙剁粨鐐癸紝鍒欏叾瀛愮粨鐐逛腑SZ鍊兼渶澶х殑錛堟敞鎰忥紝鏈夊涓猄Z鍊兼渶澶х殑瀛愮粨鐐瑰簲浠婚変竴涓紝鍙兘閫変竴涓紝闃叉鍑虹幇閲嶉摼鐩鎬氦錛屽紩鍙戞涔夛級鐐箉錛岃竟(x, y)縐頒負閲嶈竟錛屽叾浣欑殑杈歸兘鏄交杈廣傞灝劇浉榪炵殑閲嶈竟縐頒負閲嶉摼錛堟敞鎰?..  <a href='http://www.shnenglu.com/MatoNo1/archive/2012/01/03/163491.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/MatoNo1/aggbug/163491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2012-01-03 16:41 <a href="http://www.shnenglu.com/MatoNo1/archive/2012/01/03/163491.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Splay Tree澶勭悊鍖洪棿闂鐨勫嚑閬撳ソ棰樺強鎬葷粨http://www.shnenglu.com/MatoNo1/archive/2011/06/25/149425.htmlMato_No1Mato_No1Sat, 25 Jun 2011 03:21:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2011/06/25/149425.htmlhttp://www.shnenglu.com/MatoNo1/comments/149425.htmlhttp://www.shnenglu.com/MatoNo1/archive/2011/06/25/149425.html#Feedback2http://www.shnenglu.com/MatoNo1/comments/commentRss/149425.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/149425.html錛?錛塕obotic Sort錛?a title="HDU1890" >HDU1890銆?a title="ZJU2985" >ZJU2985錛?br />鏈涓昏鑰冨療鐨勬槸瀵規綾婚棶棰橈紝搴忓垪涓粰瀹氬肩殑绱㈠紩闂銆?br />褰揝play Tree鐢ㄦ潵澶勭悊涓涓簭鍒楃殑鏃跺欙紝鍏跺叧閿瓧灝辨槸搴忓垪涓厓绱犵殑涓嬫爣錛岃屼笉鏄厓绱犵殑鍊箋傝繖鏍鳳紝濡傛灉瑕佹煡鎵懼簭鍒椾腑緇欏畾鐨勫肩殑浣嶇疆錛堝亣璁懼簭鍒椾腑浠繪剰涓や釜鍏冪礌鐨勫間笉鐩哥瓑錛夌湅璧鋒潵灝辨棤娉曞疄鐜般傚叾瀹炰篃鏄湁鍔炴硶瀹炵幇鐨勶細鍥犱負鍏冪礌鍦ㄦ爲涓殑涓嬫爣鏄案榪滀笉鍙樼殑錛佷篃灝辨槸錛岃榪欎釜搴忓垪涓篈錛屽鏋淎[i]鍦ㄦ彃鍏play Tree鏃剁殑涓嬫爣涓簀錛岄偅涔堝湪A[i]琚垹闄や箣鍓嶏紝鍏朵笅鏍囦竴鐩存槸j錛屾案榪滀笉浼氬彉錛堟敞鎰忓厓绱犲湪搴忓垪涓殑涓嬫爣鍜屽湪鏍戜腑鐨勪笅鏍囨槸涓嶅悓鐨勶級銆傚埄鐢ㄨ繖涓鎬ц川鍙互瑙e喅緇欏畾鍊肩殑绱㈠紩闂銆?br />瀵逛簬鏈錛屾瘡嬈″皢浠庡簭鍒椾腑絎琲灝忕殑鍏冪礌鍒板簭鍒椾腑絎琲涓厓绱狅紙榪欓噷鍋囧畾鍏冪礌涓嬫爣鏄粠1寮濮嬬殑錛岃屼笉鏄粠0寮濮嬶級涔嬮棿鐨勬墍鏈夊厓绱犲弽杞紝騫惰緭鍑虹i灝忕殑鍏冪礌鍦ㄥ弽杞箣鍓嶇殑鍦ㄥ簭鍒椾腑鐨勪笅鏍囥傝B[i]涓虹i灝忕殑鏁扮殑鍒濆浣嶇疆錛孲[i]涓?span style="color: #ff0000">鍒濆浣嶇疆鍦ㄧi浣嶇殑鍏冪礌鐨勪笅鏍囷紝B[i]鍜孲[i]閮藉彲浠ラ氳繃棰勫鐞嗗緱鍒般傜劧鍚庯紝姣忔浜ゆ崲鍓嶏紝姹傚嚭S[B[i]]鍦ㄦ爲涓殑鎺掑悕錛堝熀鏈搷浣滐級錛屽啀鍑?錛堝洜涓烘湁杈圭晫緇撶偣錛夊氨鏄鍏冪礌鐩墠鐨勪綅緗紝鑰屽簭鍒椾腑絎琲涓厓绱犲氨鏄爲涓(i+1)灝忕殑鍏冪礌錛屽啀鎵ц浜ゆ崲鍗沖彲銆?br />涓嶈繃闇瑕佸崈涓囨敞鎰忕殑鏄湰棰樼殑鏍囪闂錛屽湪姹係[B[i]]鍦ㄦ爲涓殑鎺掑悕鏃訛紝鏈夊彲鑳藉叾紲栧厛緇撶偣涓婃湁鏍囪錛岄渶瑕佸厛閬嶅巻鍏舵墍鏈夌殑紲栧厛緇撶偣錛屽啀閫嗗悜涓嬫斁鏍囪錛堟爣璁板彧鑳借嚜欏跺悜涓嬩紶錛夈傚彟澶栧湪浜ゆ崲鐨勬椂鍊欓渶瑕佹眰鍑篠[B[i]]鐨勫悗緇э紝鍦ㄦ眰鍚庣戶鐨勮繃紼嬩腑闇瑕佹煡鎵撅紝姝ゆ椂鍗冧竾鍒繕浜嗕笅鏀炬爣璁幫紙鎬葷殑璇達紝鍑℃槸鏈夋煡鎵劇殑鍦版柟錛屽氨鏈塪m錛?br />浠g爜錛堟湰娌欒尪澶急浜嗭紝鏄妱鍒漢鐨勶紝鍥犳鍏剁畻娉曞拰涓婇潰鎬葷粨鐨勫彲鑳芥湁宸埆錛岀鐘囦笉瑕侀剻瑙嗭級
錛?錛塖uperMemo錛?a title="PKU3580" >PKU3580錛?br />鏈鐨?涓搷浣滀腑錛宎dd銆乺everse銆乮nsert銆乨elete銆乵in閮戒笉闅炬悶錛岃宺evolve鎿嶄綔闇瑕佹秹鍙婂埌鍖洪棿浜ゆ崲銆?br />鍙互鍙戠幇錛屾墍璋撶殑鏃嬭漿鍏跺疄灝辨槸浜ゆ崲涓や釜鐩擱偦鍖洪棿錛岃繖瀵逛簬鍔熻兘鏋佸己鐨凷play Tree鏉ヨ鏍規湰涓嶉毦鎼炪?br />璁捐繖涓や釜鐩擱偦鍖洪棿涓篬x, y]涓嶽y+1, z]錛屽亣璁懼畠浠潎闈炵┖錛堜篃灝辨槸x<=y<z錛屽洜涓鴻嫢鍏朵腑鑷沖皯鏈変竴涓尯闂存槸絀哄尯闂達紝鍒欎氦鎹㈡病鏈夋剰涔夛級錛屽厛鎵懼埌鏍戜腑x鐨勫墠瓚婸涓巣鐨勫悗緇錛堣繖閲寈銆亃絳夋寚鐨勯兘鏄搴旂殑緇撶偣錛屼笅鍚岋級錛屽皢P浼稿睍鍒版牴銆佸皢S浼稿睍鍒版牴鐨勫彸瀛愮粨鐐瑰錛屽垯S鐨勫乏瀛愭爲灝辮〃紺哄尯闂碵x, z]銆傜劧鍚庯紝璁維鐨勫乏瀛愭爲鐨勬牴緇撶偣錛堜篃灝辨槸S鐨勫乏瀛愮粨鐐癸級涓篘錛屽湪榪欐5瀛愭爲涓壘鍒扮1灝忕殑緇撶偣P0涓庣(y-x+2)灝忕殑緇撶偣S0錛堣繖闇瑕佹秹鍙婂埌鎵懼瓙鏍戝唴絎琄灝忕殑鎿嶄綔錛屽彧瑕佹妸鎵炬暣媯墊爲絎琄灝忕殑鎿嶄綔鐨剅oot鏀逛負N鍗沖彲錛夛紝瀹冧滑鍒嗗埆琛ㄧずx涓?y+1)錛岃繖鏍峰皢P0浼稿睍鍒癗澶勶紝灝哠0浼稿睍鍒癗鐨勫彸瀛愮粨鐐瑰錛屾樉鐒禤0鏃犲乏瀛愭爲錛孲0鐨勫乏瀛愭爲T1琛ㄧず鍖洪棿[x+1, y]錛孲0鐨勫彸瀛愭爲T2琛ㄧず鍖洪棿[y+2, z]銆傜劧鍚庯紝鍏堝皢S0浠嶱0鐨勫彸瀛愮粨鐐圭Щ鍔ㄥ埌P0鐨勫乏瀛愮粨鐐癸紝鍐嶅皢T1浣滀負P0鐨勫彸瀛愭爲錛堟敞鎰忕Щ鍔ㄦ槸涓ゆ錛氭彃鍏ュ拰鍒犻櫎錛夈傝繖鏍鋒暣媯靛瓙鏍戠殑涓簭閬嶅巻緇撴灉鍙樻垚浜哠0->T2->P0->T1錛屼篃灝辨槸[y+1, z]∪[x, y]銆?br />鍙﹀鏈鐨勬爣璁版湁鐐歸毦鎼烇紝鍙渶娉ㄦ剰rev鏄嗗悜鏍囪錛屼互鍙婃煡鎵句笌dm鍏卞瓨灝辮浜嗐?br />浠g爜
錛?錛塒lay with Chain(HDU3487)
榪欎釜綾蟲湁紲為┈濂借鐨勶紝閲岄潰鐨勬搷浣滃湪SuperMemo閲岄兘鏈夛紱
浠g爜
錛?錛?a title="AHOI2006 鏂囨湰緙栬緫鍣?editor)" >AHOI2006 鏂囨湰緙栬緫鍣?editor)
榪欓鍦ㄨ繖涓綾婚閲岄潰綆楁按鐨勩傚浜庡厜鏍囷紝鍙鐢ㄤ竴涓兼潵緇存姢灝辮浜嗐?br />鍙﹀娉ㄦ剰鏈鏋佷負鐚ョ悙鐨?鐐癸紙棰樼洰涓背鏈夎鏄庯級錛氫竴鏄渶鍒濈殑鏂囨湰騫朵笉鏄┖鐨勶紝鑰屾槸鏈変竴涓┖鏍鹼紱浜屾槸鎵цGET鎿嶄綔鏃跺厜鏍囧彲鑳戒綅浜庢枃鏈湯灝撅紝姝ゆ椂搴旇緭鍑虹┖鏍鹼紱
浠g爜
錛?錛塇FTSC2011 楂樼簿搴﹁綆楀櫒(apc)錛岄鐩榪欎釜甯栧瓙錛?br />榪欓鍙嶆槧鍑轟簡涓涓緢鍥х殑闂錛氭湁浜涗俊鎭細琚玶ev鏁翠綋鐮村潖銆?br />鏈涓殑鎿嶄綔閮芥槸甯歌鎿嶄綔錛屼絾鏄湰棰樻墍闇瑕佺淮鎶ょ殑淇℃伅鍗翠笉鏄偅涔堝鏄撶淮鎶ゃ傛湰棰樿姹傜淮鎶や竴媯靛瓙鏍戜腑鎵鏈夌粨鐐規墍琛ㄧず鐨勫厓绱犲簭鍒楋紙涓簭閬嶅巻緇撴灉錛夋ā涓涓寚瀹氱殑M鐨勫箋傝F[i]涓篟^i mod M鐨勫鹼紙榪欓噷R鏄繘鍒訛紝涔熷氨鏄鐩腑鐨凨錛夛紝鍒欐湁錛?br />T[x].mod = (T[T[x].c[0]].mod * F[T[T[x].c[1]].sz + 1] + T[x].v * F[T[T[x].c[1]].sz] + T[T[x].c[1]].mod) % M;
榪欎釜寮忓瓙鍏跺疄鏄緢濂界悊瑙g殑銆?br />鍏抽敭鏄紝鏈鐨勭尌鐞愪箣澶勫茍涓嶅湪姝ゃ傛敞鎰忔湰棰樼殑rev鎿嶄綔錛屽畠浼氭暣浣撴敼鍙樻爲涓墍鏈夌粨鐐規墍璁板綍鐨刴od鍊鹼紝榪欐椂錛屽鏋滃啀鐢ㄤ笂闈㈣繖涓紡瀛愭潵緇存姢T[x].mod錛屽氨浼氬嚭閿欙紝鍥犱負姝ゆ椂寮曠敤鍒扮殑T[T[x].c[0]].mod鍜孴[T[x].c[1]].mod閮芥槸榪囨椂鐨勩傝В鍐寵繖涓闂鍙湁涓縐嶆柟娉曪細璁板綍“閫唌od”(rmod)錛屾剰鎬濇槸灝嗘暣涓厓绱犲簭鍒楀弽杞悗鐨刴od錛屽嵆錛?br />T[x].rmod = (T[T[x].c[1]].rmod * F[T[T[x].c[0]].sz + 1] + T[x].v * F[T[T[x].c[0]].sz] + T[T[x].c[0]].rmod) % M;
榪欐牱錛屽湪鍙嶈漿鏌愬簭鍒楃殑鏃跺欙紝鐩存帴灝嗘牴緇撶偣鐨刴od鍊煎拰rmod鍊間氦鎹㈠氨琛屼簡銆?br />鍍弇od榪欐牱浼氳鍙嶈漿鎿嶄綔鏁翠綋鐮村潖鐨勪俊鎭繕鏈夊緢澶氾紝姣斿NOI2005 sequence閲岄潰鐨刲max鍜宺max銆傚鏋滅湡鐨勯亣鍒拌繖綾諱俊鎭紝鍙湁閲囩敤涓婇潰鐨勬柟娉曘?br />鍙﹀錛屾湰棰樼6銆?銆?0涓偣鏈夎銆?br />浠g爜

鐜板湪Splay Tree宸笉澶氬紕瀹屼簡錛屾帴涓嬫潵榪樻湁N澶氱煡鍚嶇殑銆佷笉鐭ュ悕鐨勯珮綰ф暟鎹粨鏋?#8230;…鏃墮棿MS鏈変簺涓嶅鐢ㄤ簡鍥?#8230;…


Mato_No1 2011-06-25 11:21 鍙戣〃璇勮
]]>
銆怤OI2005 緇存姢鏁板垪(sequence)銆慡play Tree澶勭悊搴忓垪闂http://www.shnenglu.com/MatoNo1/archive/2011/06/21/149121.htmlMato_No1Mato_No1Tue, 21 Jun 2011 08:06:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2011/06/21/149121.htmlhttp://www.shnenglu.com/MatoNo1/comments/149121.htmlhttp://www.shnenglu.com/MatoNo1/archive/2011/06/21/149121.html#Feedback0http://www.shnenglu.com/MatoNo1/comments/commentRss/149121.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/149121.html銆愬師棰樿榪欓噷銆?br />鏈鏄疭play Tree澶勭悊搴忓垪闂錛堜篃灝辨槸褰撶嚎孌墊爲鐢級鐨勪竴涓吀鍨嬩緥棰樸?br />
Splay Tree涔嬫墍浠ュ彲浠ュ綋綰挎鏍戠敤錛屾槸鍥犱負瀹冨彲浠ユ敮鎸佷竴涓簭鍒楋紝鐒跺悗鐢?#8220;宸︾鍓嶈秼浼稿睍鍒版牴錛屽彸绔悗緇т幾灞曞埌鏍圭殑鍙沖瓙緇撶偣錛屽彇鏍圭殑鍙沖瓙緇撶偣鐨勫乏瀛愮粨鐐?#8221;榪欑浼稿睍鏂規硶錛屽涓涓簭鍒椾腑鐨勪竴鏁存榪涜鏁翠綋鎿嶄綔銆傜敱浜庤闃叉鍑虹幇鍓嶈秼鎴栧悗緇т笉瀛樺湪鐨勬儏鍐碉紝闇瑕佸湪榪欎釜搴忓垪鐨勪袱绔姞鍏ヤ袱涓竟鐣岀粨鐐癸紝瑕佹眰鍏跺間笉鑳藉獎鍝嶅埌緇撶偣鍚勭璁拌澆淇℃伅鐨勭淮鎶わ紙澶氬彇0銆?#8734;鎴?∞錛夈傝繖涓や釜杈圭晫緇撶偣鍦ㄦ爲涓案榪滃瓨鍦紝涓嶄細琚垹闄ゃ?br />
錛?錛夌粨鐐圭殑寮曠敤錛?br />鍦ㄥ綋綰挎鏍戠敤鐨凷play Tree涓紝鐪熸鐨勫叧閿瓧鏄笅鏍囪屼笉鏄鹼紝鍥犳錛?#8220;搴忓垪涓i涓粨鐐?#8221;瀹為檯涓婂搴旂殑鏄?#8220;鏍戜腑絎?i+1)灝忕殑緇撶偣”錛堝洜涓哄乏杈硅繕鏈変竴涓竟鐣岀粨鐐癸級錛岃繖灝辮鏄庡湪瀵圭粨鐐瑰紩鐢ㄦ椂闇瑕佹壘絎琄灝忕殑鎿嶄綔銆傚洜姝わ紝涓嬮潰鐨?#8220;緇撶偣x”鎸囩殑鏄?#8220;鏍戜腑絎?x+1)灝忕殑緇撶偣”銆?br />錛?錛夋爣璁幫細
鍦ㄧ嚎孌墊爲涓紝濡傛灉瀵逛竴涓粨鐐規墍琛ㄧず鐨勭嚎孌墊暣浣撹繘琛屼簡鏌愮鎿嶄綔錛岄渶瑕佸湪榪欎釜緇撶偣涓婃墦涓婁竴涓爣璁幫紝鍦ㄤ笅涓嬈″啀鎵懼埌榪欎釜緇撶偣鏃訛紝鍏舵爣璁板氨浼氫笅鏀懼埌鍏朵袱涓瓙緇撶偣涓娿傚湪Splay Tree涓篃鍙互寮曞叆鏍囪銆傛瘮濡傝瀵筟2, 6]榪欎竴孌佃繘琛屾暣浣撴搷浣滐紝灝卞皢緇撶偣1浼稿睍鍒版牴鐨勪綅緗紝灝嗙粨鐐?浼稿睍鍒版牴鐨勫彸瀛愭爲鐨勪綅緗紝鐒跺悗緇撶偣7鐨勫乏瀛愭爲灝辮〃紺篬2, 6]榪欎竴孌碉紝瀵硅繖媯靛瓙鏍戠殑鏍圭粨鐐規墦涓婃爣璁板茍绔嬪嵆鐢熸晥錛堝繀欏繪槸绔嬪嵆鐢熸晥錛岃屼笉鏄瓑涓嬩竴嬈″紩鐢ㄥ啀鐢熸晥錛夛紝涔熷氨鏄珛鍗蟲敼鍙樿緇撶偣璁板綍鐨勪竴浜涗俊鎭殑鍊箋傚鏋滀笅嬈″啀嬈″紩鐢ㄥ埌榪欎釜緇撶偣錛屽氨瑕佸皢鍏舵爣璁頒笅鏀懼埌鍏朵袱涓瓙緇撶偣澶勶紱
闇瑕佹敞鎰忕殑涓鐐規槸錛屽鏋滆浼稿睍鏌愪釜緇撶偣x鍒皉鐨勫瓙緇撶偣鐨勪綅緗紝灝卞繀欏諱繚璇佷粠x鍘熸潵鐨勪綅緗埌r鐨勮繖涓瓙緇撶偣錛坸浼稿睍鍚庣殑浣嶇疆錛変笂鐨勬墍鏈夌粨鐐逛笂鍧囨病鏈夋爣璁幫紝鍚﹀垯灝變細瀵艱嚧鏍囪娣蜂貢銆傚洜姝わ紝蹇呴』棣栧厛鎵懼埌榪欎釜緇撶偣x錛屽湪姝よ繃紼嬩腑涓嶆柇涓嬫斁鏍囪銆?br />錛?錛夎嚜搴曞悜涓婄淮鎶ょ殑淇℃伅錛?br />鏍囪鍙互鐪嬫垚涓縐嶈嚜欏跺悜涓嬬淮鎶ょ殑淇℃伅銆傞櫎浜嗘爣璁頒互澶栵紝浣滀負“綰挎鏍?#8221;錛屽線寰榪樿緇存姢涓浜涜嚜搴曞悜涓婄淮鎶ょ殑淇℃伅銆傛瘮濡傚湪sequence榪欓涓紝灝辨湁lmax錛堝乏孌佃繛緇渶澶у拰錛夈乺max錛堝彸孌佃繛緇渶澶у拰錛夈乵idmax錛堝叏孌佃繛緇渶澶у拰錛変互鍙妔um錛堝叏孌墊誨拰錛夌瓑淇℃伅瑕佺淮鎶ゃ傚浜庤繖綾諱笢涓滃叾瀹炰篃寰堝ソ鍔烇紝鍥犱負瀛愭爲澶у皬錛坰z鍩燂級灝辨槸涓縐嶈嚜搴曞悜涓婄淮鎶ょ殑淇℃伅錛屽洜姝ゅ浜庤繖浜涗俊鎭彧瑕佹寜鐓х淮鎶z鍩熺殑鍔炴硶緇存姢鍗沖彲錛堢粺涓鍐欏湪upd鍑芥暟閲岋級銆傚敮涓鐨勪笉鍚岀偣鏄墦鏍囪鏃跺畠浠殑鍊煎彲鑳借鏀瑰彉銆?br />錛?錛夊榪炵畫鎻掑叆鐨勭粨鐐瑰緩鏍戯細
鏈鐨勬彃鍏ヤ笉鏄竴涓竴涓彃鍏ワ紝鑰屾槸涓涓嬪瓙鎻掑叆涓鏁存錛屽洜姝ら渶瑕佸厛灝嗗畠浠緩鎴愪竴媯墊爲銆備竴鑸緩鏍戞搷浣滈兘鏄掑綊鐨勶紝榪欓噷涔熶竴鏍楓傝鐩墠瑕佸A[l..r]寤烘爲錛圓涓哄緟鎻掑叆搴忓垪錛夛紝鑻>r鍒欓鍑猴紝鍚﹀垯鎵懼埌浣嶄簬涓棿鐨勫厓绱爉id = l + r >> 1錛屽皢A[mid]浣滄牴錛屽啀瀵笰[l..mid-1]寤哄乏瀛愭爲錛屽A[mid+1..r]寤哄彸瀛愭爲鍗沖彲銆傝繖鏍峰彲浠ヤ繚璇佷竴寮濮嬪緩鐨勫氨鏄竴媯靛鉤琛℃爲錛屽噺灝忓父鏁板洜瀛愩?br />錛?錛夊洖鏀剁┖闂達細
鏍規嵁鏈鐨勬暟鎹寖鍥存彁紺猴紝鎻掑叆鐨勭粨鐐規繪暟鏈澶氬彲鑳借揪鍒?000000錛屼絾鍦ㄤ換浣曟椂鍒繪爲涓渶澶氬彧鏈?00002涓粨鐐癸紙鍖呮嫭涓や釜杈圭晫錛夛紝姝ゆ椂涓轟簡鑺傜渷絀洪棿錛屽彲浠ラ噰鐢ㄥ驚鐜槦鍒楀洖鏀剁┖闂寸殑鏂規硶銆傚嵆錛氫竴寮濮嬪皢鎵鏈夌殑鍙敤絀洪棿錛堝彲鐢ㄤ笅鏍囷紝鏈涓?~500002錛夊瓨鍦ㄥ驚鐜槦鍒桻閲岋紝鍚屾椂璁劇珛澶村熬鎸囬拡front鍜宺ear錛屾瘡嬈″鏋滄湁鏂扮粨鐐規彃鍏ワ紝灝卞彇鍑篞[front]騫朵綔涓烘柊緇撶偣鐨勪笅鏍囷紝濡傛灉鏈夌粨鐐硅鍒犻櫎錛堟湰棰樻槸涓嬈″垹闄ゆ暣媯靛瓙鏍戯紝鍥犳鍦ㄥ垹闄ゅ悗闇瑕佸垎鍒洖鏀跺畠浠殑絀洪棿錛夛紝鍒欎粠rear寮濮嬶紝灝嗘瘡涓垹闄ょ殑緇撶偣鐨勪笅鏍囨斁鍥炲埌Q閲屻傚綋鐒訛紝榪欑鏂規硶鏄鐗虹壊涓瀹氱殑鏃墮棿鐨勶紝鍥犳鍦ㄧ┖闂翠笉鏄壒鍒悆绱х殑鎯呭喌涓嬩笉瑕佺敤銆?br />
銆?012騫?鏈?6鏃ユ洿鏂般?br />浠婂ぉ閲嶅啓sequence鐨勬椂鍊欙紝縐冪劧鍙戠幇鍔犲叆鐨勮竟鐣岀偣鍙兘浼氬lmax銆乺max銆乵idmax絳夌殑緇存姢閫犳垚褰卞搷錛氬綋搴忓垪涓墍鏈夌殑鍊奸兘鏄礋鏁版椂錛岃嫢杈圭晫鐐圭殑鍊艱涓?錛屽皢浣胯繖3涓間篃涓?錛屾墍浠ワ紝杈圭晫鐐圭殑鍊煎簲璁句負-INF錛堜笉浼氬獎鍝嶅埌sum錛屽洜涓哄彲浠ュ崟鐙皟鍑篬l, r]鐨剆um錛岄伩寮杈圭晫錛夈傝繖灝辮鏄庡茍闈炴墍鏈夎繖鏍風殑棰樹腑閮藉彲浠ヨ緗竟鐣岀偣錛堟瘮濡侶FTSC2011鐨勯偅棰樺氨涓嶈錛夛紝濡傛灉杈圭晫鐐逛細瀵圭淮鎶ょ殑淇℃伅閫犳垚褰卞搷錛屽氨涓嶈兘璁劇疆杈圭晫鐐癸紝鍦ㄥ悇涓搷浣滀腑錛屽垎4縐嶆儏鍐靛垽鏂傦紙浠g爜宸茬粡淇敼錛?br />
涓嬮潰涓婁唬鐮佷簡錛?
#include <iostream>
#include 
<stdio.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
const int MAXN = 500002, NOSM = -2000, INF = ~0U >> 2;
struct node {
    
int v, c[2], p, sz, sum, lmax, rmax, midmax, sm;
    
bool rev, d;
} T[MAXN 
+ 1];
int root, Q[MAXN + 1], front, rear, a[MAXN], len, res;
int max(int SS0, int SS1)
{
    
return SS0 >= SS1 ? SS0 : SS1;
}
int max(int SS0, int SS1, int SS2)
{
    
int M0 = SS0 >= SS1 ? SS0 : SS1; return M0 >= SS2 ? M0 : SS2;
}
void newnode(int n, int _v)
{
    T[n].v 
= T[n].sum = T[n].lmax = T[n].rmax = T[n].midmax = _v; T[n].c[0= T[n].c[1= 0; T[n].sz = 1; T[n].sm = NOSM; T[n].rev = 0;
}
void sc(int _p, int _c, bool _d)
{
    T[_p].c[_d] 
= _c; T[_c].p = _p; T[_c].d = _d;
}
void sm_opr(int x, int SM)
{
    T[x].sum 
= T[x].sz * SM;
    
if (SM > 0) T[x].lmax = T[x].rmax = T[x].midmax = T[x].sum; else T[x].lmax = T[x].rmax = T[x].midmax = SM;
}
void rev_opr(int x)
{
    
int c0 = T[x].c[0], c1 = T[x].c[1]; sc(x, c0, 1); sc(x, c1, 0);
    
int tmp = T[x].lmax; T[x].lmax = T[x].rmax; T[x].rmax = tmp;
}
void dm(int x)
{
    
int SM0 = T[x].sm;
    
if (SM0 != NOSM) {
        T[x].v 
= T[T[x].c[0]].sm = T[T[x].c[1]].sm = SM0; T[x].sm = NOSM;
        sm_opr(T[x].c[
0], SM0); sm_opr(T[x].c[1], SM0);
    }
    
if (T[x].rev) {
        T[T[x].c[
0]].rev = !T[T[x].c[0]].rev; T[T[x].c[1]].rev = !T[T[x].c[1]].rev; T[x].rev = 0;
        rev_opr(T[x].c[
0]); rev_opr(T[x].c[1]);
    }
}
void upd(int x)
{
    
int c0 = T[x].c[0], c1 = T[x].c[1];
    T[x].sz 
= T[c0].sz + T[c1].sz + 1;
    T[x].sum 
= T[c0].sum + T[c1].sum + T[x].v;
    T[x].lmax 
= max(T[c0].lmax, T[c0].sum + T[x].v + max(T[c1].lmax, 0));
    T[x].rmax 
= max(T[c1].rmax, max(T[c0].rmax, 0+ T[x].v + T[c1].sum);
    T[x].midmax 
= max(T[c0].midmax, T[c1].midmax, max(T[c0].rmax, 0+ T[x].v + max(T[c1].lmax, 0));
}
void rot(int x)
{
    
int y = T[x].p; bool d = T[x].d;
    
if (y == root) {root = x; T[root].p = 0;} else sc(T[y].p, x, T[y].d);
    sc(y, T[x].c[
!d], d); sc(x, y, !d); upd(y);
}
void splay(int x, int r)
{
    
int p; while ((p = T[x].p) != r) if (T[p].p == r) rot(x); else if (T[x].d == T[p].d) {rot(p); rot(x);} else {rot(x); rot(x);} upd(x);
}
int Find_Kth(int K)
{
    
int i = root, S0;
    
while (i) {
        dm(i); S0 
= T[T[i].c[0]].sz + 1;
        
if (K == S0) breakelse if (K < S0) i = T[i].c[0]; else {K -= S0; i = T[i].c[1];}
    }
    
return i;
}
int mkt(int l, int r)
{
    
if (l > r) return 0;
    
int n0 = Q[front], mid = l + r >> 1if (front == MAXN) front = 1else front++;
    newnode(n0, a[mid]); 
int l_r = mkt(l, mid - 1), r_r = mkt(mid + 1, r);
    sc(n0, l_r, 
0); sc(n0, r_r, 1); upd(n0); return n0;
}
void ins(int pos)
{
    
int P0 = Find_Kth(pos); splay(P0, 0); int P1 = Find_Kth(pos + 1); splay(P1, root); sc(P1, mkt(0, len - 1), 0); upd(P1); upd(P0);
}
void era(int x)
{
    
if (!x) return;
    
if (rear == MAXN) rear = 1else rear++; Q[rear] = x;
    era(T[x].c[
0]); era(T[x].c[1]);
}
void del(int l, int r)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int root0 = T[P1].c[0]; sc(P1, 00); upd(P1); upd(P0); era(root0);
}
void mksame(int l, int r, int x)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int n = T[P1].c[0]; T[n].sm = x; sm_opr(n, x); upd(P1); upd(P0);
}
void reve(int l, int r)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int n = T[P1].c[0]; T[n].rev = !T[n].rev; rev_opr(n); upd(P1); upd(P0);
}
int get_sum(int l, int r)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int n = T[P1].c[0]; return T[n].sum;
}
int max_sum()
{
    
return T[root].midmax;
}
void prepare()
{
    T[
0].sz = T[0].sum = T[0].lmax = T[0].rmax = T[0].midmax = 0;
    front 
= 3; rear = MAXN; re1(i, MAXN) Q[i] = i;
    newnode(
1-INF); newnode(2-INF); sc(121); root = 1; T[root].p = 0;
}
int main()
{
    freopen(
"sequence.in""r", stdin);
    freopen(
"sequence.out""w", stdout);
    prepare();
    
int m, l, r, x;
    scanf(
"%d%d"&len, &m); char ch = getchar(), str[1000];
    re(i, len) scanf(
"%d"&a[i]); ins(1);
    re(i, m) {
        scanf(
"%s", str);
        
if (!strcmp(str, "INSERT")) {scanf("%d%d"&l, &len); re(i, len) scanf("%d"&a[i]); ins(++l);}
        
if (!strcmp(str, "DELETE")) {scanf("%d%d"&l, &r); r += l++; del(l, r);}
        
if (!strcmp(str, "MAKE-SAME")) {scanf("%d%d%d"&l, &r, &x); r += l++; mksame(l, r, x);}
        
if (!strcmp(str, "REVERSE")) {scanf("%d%d"&l, &r); r += l++; reve(l, r);}
        
if (!strcmp(str, "GET-SUM")) {scanf("%d%d"&l, &r); r += l++; printf("%d\n", get_sum(l, r));}
        
if (!strcmp(str, "MAX-SUM")) printf("%d\n", max_sum());
        ch 
= getchar();
    }
    fclose(stdin); fclose(stdout);
    
return 0;
}

鏈鍚庢妸鎴戠殑榪欎釜浠g爜涓嶣YVoid紲炵妵鐨勬湰棰樹唬鐮佽繘琛屾祴璇曟瘮杈冿紝緇撴灉錛圔YVoid紲炵妵鐨勪唬鐮佽榪欓噷錛夛細

BYVoid紲炵妵鐨勶細


鏈矙鑼剁殑錛?br />

銆愮浉鍏寵鏂囥?br />

Mato_No1 2011-06-21 16:06 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            禁久久精品乱码| 欧美日本久久| 国产视频在线观看一区二区| 亚洲黄色精品| 亚洲欧美国产视频| 榴莲视频成人在线观看| 亚洲欧美在线另类| 亚洲制服av| 欧美亚洲综合在线| 欧美亚洲在线视频| 欧美在线视频播放| 久久精品亚洲精品| 久久福利视频导航| 久久综合九色综合欧美就去吻 | 亚洲免费激情| 一区二区三区视频在线观看| 亚洲欧美日本精品| 久久综合伊人77777蜜臀| 欧美成人精品1314www| 牛夜精品久久久久久久99黑人| 久久手机免费观看| 91久久国产精品91久久性色| 99re热精品| 美女91精品| 国产日韩精品一区二区三区在线 | 久久高清一区| 欧美精品videossex性护士| 国产欧美日韩视频在线观看| 91久久久在线| 免费人成精品欧美精品| 亚洲欧美日韩成人| 欧美四级在线观看| 一区二区精品在线| 亚洲国内自拍| 欧美国产精品人人做人人爱| 国产主播一区| 欧美中文在线视频| 亚洲欧美视频一区二区三区| 国产精品v欧美精品v日韩 | 欧美激情在线免费观看| 国产主播一区二区三区| 欧美日韩在线观看一区二区三区 | 欧美国产乱视频| 一片黄亚洲嫩模| 欧美精品麻豆| 亚洲精品国久久99热| 欧美在线观看天堂一区二区三区 | 久久精品二区亚洲w码| 99视频+国产日韩欧美| 欧美高清视频在线观看| 在线电影院国产精品| 久久国产精品网站| 亚洲欧美精品中文字幕在线| 国产精品毛片在线看| 亚洲小视频在线观看| 日韩亚洲欧美在线观看| 欧美日韩视频在线观看一区二区三区 | 国产精品xvideos88| 一区二区不卡在线视频 午夜欧美不卡在 | 午夜精品国产更新| 亚洲一区二区成人| 国产精品日韩精品欧美精品| 午夜一区在线| 欧美在线观看你懂的| 国产欧美精品日韩区二区麻豆天美| 午夜精品免费在线| 性做久久久久久免费观看欧美| 国产精品色网| 久久久精品性| 嫩模写真一区二区三区三州| 亚洲精选中文字幕| 一区二区三区视频在线看| 国产精品午夜av在线| 久久免费偷拍视频| 欧美国产在线电影| 亚洲欧美日本国产有色| 欧美主播一区二区三区| 一区二区视频免费完整版观看| 欧美成人黄色小视频| 欧美人妖另类| 久久久99国产精品免费| 久久综合久久久| 亚洲一级一区| 狠狠入ady亚洲精品经典电影| 老鸭窝毛片一区二区三区| 午夜国产一区| 91久久综合| 亚洲婷婷国产精品电影人久久| 国产精品视频久久久| 蜜桃av一区二区| 国产精品jizz在线观看美国| 久久久天天操| 欧美午夜一区二区三区免费大片| 久久精品女人的天堂av| 欧美激情综合| 久久久久久久尹人综合网亚洲| 欧美激情一区在线| 久久青草欧美一区二区三区| 欧美日韩国产综合视频在线观看 | 国产精品久线观看视频| 麻豆成人在线| 国产酒店精品激情| 亚洲国产一成人久久精品| 国产精品卡一卡二| 91久久精品美女| 国产综合久久| 一本久道久久综合婷婷鲸鱼| 亚洲国产精品99久久久久久久久| 亚洲一区免费在线观看| 99re8这里有精品热视频免费| 久久成人免费| 欧美中文字幕在线视频| 欧美日韩中字| 亚洲第一区在线观看| 国产一区二区久久| 亚洲永久视频| 亚洲午夜久久久| 欧美激情视频网站| 欧美激情一区二区三区| 亚洲丶国产丶欧美一区二区三区 | 亚洲精品麻豆| 亚洲精品一级| 免费亚洲一区| 欧美aaa级| 黄色精品网站| 久久精品av麻豆的观看方式| 香蕉久久夜色| 国产精品麻豆成人av电影艾秋 | 久久综合国产精品| 久久久蜜臀国产一区二区| 国产欧美1区2区3区| 亚洲一区二区高清| 性做久久久久久久久| 国产精品私房写真福利视频| 亚洲午夜精品国产| 香蕉久久精品日日躁夜夜躁| 国产精品swag| 亚洲欧美久久久久一区二区三区| 欧美一区二区三区在| 国产深夜精品| 久久国产精品72免费观看| 久久一区欧美| 91久久国产综合久久| 欧美**字幕| 亚洲精品一级| 欧美三级乱人伦电影| 亚洲欧美中文字幕| 国产欧美一区二区三区在线老狼 | 亚洲欧美国产毛片在线| 国产精品扒开腿爽爽爽视频| 亚洲一区二区三区激情| 久久精品国产综合精品| 在线国产亚洲欧美| 欧美成人精品在线视频| 日韩网站在线看片你懂的| 亚洲欧美日韩国产精品| 国产三级精品在线不卡| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲国产一区视频| 欧美一级成年大片在线观看| 激情综合在线| 欧美日韩免费一区| 午夜精品福利在线| 欧美激情精品久久久久久| 亚洲图片激情小说| 国内精品视频666| 欧美日韩高清不卡| 久久精品91久久久久久再现| 亚洲国产精品精华液网站| 午夜精品美女自拍福到在线| **欧美日韩vr在线| 欧美午夜电影一区| 久久久精品tv| aa级大片欧美三级| 欧美mv日韩mv亚洲| 亚洲欧美一区二区三区极速播放 | 国产精品亚洲一区二区三区在线| 久久激情视频| 日韩视频免费看| 麻豆精品视频在线观看| 中文在线不卡| 激情欧美丁香| 国产精品网站在线观看| 欧美成人亚洲成人| 久久国产主播精品| 亚洲一区二区三区免费在线观看| 欧美韩日一区| 久久精品五月婷婷| 亚洲欧美电影院| 99在线|亚洲一区二区| 亚洲国产乱码最新视频| 国产网站欧美日韩免费精品在线观看| 欧美成人dvd在线视频| 欧美中文字幕在线观看| 亚洲一区日本| 中文精品99久久国产香蕉| 日韩视频在线观看| 亚洲第一黄网| 欧美电影免费观看高清完整版| 久久精品一区二区|