锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美一区中文字幕,亚洲免费综合,午夜一级在线看亚洲http://m.shnenglu.com/MatoNo1/category/16322.htmlMato鏄竴鍙秴綰уぇ娌欒尪鈥︹︿絾浠栦竴鐩翠互鏉ラ兘鎯蟲(chóng)垚涓哄悇欏規(guī)瘮璧涢兘No.1鐨勭鐘団︹?/description>zh-cnMon, 03 Dec 2012 23:45:52 GMTMon, 03 Dec 2012 23:45:52 GMT60銆怉HOI2013澶嶄粐銆戝叧浜庣嚎孌墊爲(wèi)涓嬫爣鐨勪竴縐嶄紭鍖栬〃紺烘硶http://m.shnenglu.com/MatoNo1/archive/2012/12/01/195857.htmlMato_No1Mato_No1Sat, 01 Dec 2012 04:11:00 GMThttp://m.shnenglu.com/MatoNo1/archive/2012/12/01/195857.htmlhttp://m.shnenglu.com/MatoNo1/comments/195857.htmlhttp://m.shnenglu.com/MatoNo1/archive/2012/12/01/195857.html#Feedback0http://m.shnenglu.com/MatoNo1/comments/commentRss/195857.htmlhttp://m.shnenglu.com/MatoNo1/services/trackbacks/195857.html鏍圭粨鐐癸細(xì)1
A鐨勫乏瀛愮粨鐐癸細(xì)2A錛堝啓鎴怉<<1錛?br />A鐨勫彸瀛愮粨鐐癸細(xì)2A+1錛堝啓鎴?A<<1)+1錛?br />榪欑琛ㄧず娉曞彲浠ヨ〃紺哄嚭鏁存5綰挎鏍?wèi)锛屽洜湄?fù)錛?br />錛?錛夋瘡涓粨鐐圭殑瀛愮粨鐐圭殑涓嬫爣閮芥瘮瀹冨ぇ錛岃繖鏍峰氨涓嶄細(xì)鍑虹幇鐜紱
錛?錛夋瘡涓粨鐐圭殑鐖剁粨鐐歸兘鏄敮涓鐨勶紙鍏舵湰韜笅鏍囨暣闄?錛夛紱
浣嗘槸錛岃繖縐嶈〃紺烘硶鏈変竴涓急鐐癸細(xì)緇撶偣鐨勪笅鏍囨槸鏈夊彲鑳借秴榪?N鐨勶紝浣嗕笉浼?xì)瓒厴q?N錛屽洜姝わ紝涓轟簡(jiǎn)琛ㄧず鍑?guó)櫡ㄥ害湄?fù)N鐨勭嚎孌碉紝鎴戜滑闇瑕佸紑4N鐨勭┖闂達(dá)紝鐒惰岋紝鍏朵腑鍙湁2N-1涓綅緗槸鏈夌敤鐨勶紙鍥犱負(fù)琛ㄧず璺ㄥ害涓篘鐨勭嚎孌電殑綰挎鏍?wèi)鍏辨?2N-1)涓粨鐐癸級(jí)錛?span style="color: red">榪欐牱錛屽氨鏈変竴鍗婄殑絀洪棿琚氮璐?/strong>銆傚挨鍏舵槸榪欑綰挎鏍?wèi)鎺q垮埌澶氱淮鐨勬椂鍊?#8212;—K緇寸嚎孌墊爲(wèi)灝卞彧鏈?/2K鐨勪綅緗槸鏈夌敤鐨勶紝絀洪棿鍒╃敤鐜囬潪甯鎬綆銆傚湪鏌愪簺鍗$┖闂寸殑鍦哄悎錛屽畠?yōu)鍥ф帀浜?jiǎn)銆?br />
閭d箞錛屾湁鏈ㄦ湁濂戒竴鐐圭殑鍐欐硶鍛紵鏈濂借兘浣跨┖闂村埄鐢ㄧ巼杈懼埌100%——涔熷氨鏄墍鏈夌粨鐐圭殑涓嬫爣鍒氬ソ灝辨槸1~(2N-1)錛侊紒錛?鍙風(fēng)粨鐐逛竴鑸綔涓?#8220;鍝ㄥ叺”錛屼笉琚崰鐢級(jí)
騫朵笖錛岃繖縐嶅啓娉曡淇濊瘉浠呬粎鐢辯粨鐐圭殑涓嬫爣鍜屽畠琛ㄧず鐨勭嚎孌電殑宸﹀彸绔偣錛堝洜涓哄湪閬嶅巻綰挎鏃訛紝涓嬫爣鍜屽乏鍙崇鐐瑰熀鏈笂閮芥槸鍚屾椂鐭ラ亾鐨勶級(jí)錛屽氨鑳藉緱鍑哄叾瀛愮粨鐐圭殑涓嬫爣錛岃屼笉闇瑕佸熷姪棰濆鐨勪笢涓滐紙鏈濂絤id閮戒笉闇瑕佺畻錛夈?br />榪欑鍐欐硶灝辨槸——鐩存帴灝嗘瘡涓粨鐐圭殑DFS閬嶅巻嬈″簭褰撳仛瀹冪殑涓嬫爣錛侊紒
姣斿錛岃法搴︿負(fù)6鐨勭嚎孌墊爲(wèi)錛?br />
瀹規(guī)槗鍙戠幇錛屾牴緇撶偣涓嬫爣涓?錛屼笅鏍囦負(fù)A鐨勭粨鐐圭殑宸﹀瓙緇撶偣涓嬫爣涓?A+1)錛屽彸瀛愮粨鐐逛笅鏍囦負(fù)A+SZ(A.L)+1錛屽叾涓璖Z(A.L)涓篈鐨勫乏瀛愭爲(wèi)澶у皬銆?br />鑻鐨勫乏鍙崇鐐逛負(fù)l銆乺錛宮id=(l+r)/2錛堜笅鍙栨暣錛夛紝鍒橝鐨勫乏瀛愭爲(wèi)鎵琛ㄧず鐨勭嚎孌典負(fù)[l, mid]錛屾墍浠Z(A.L)=(mid-l+1)*2-1=(mid-l)*2+1=((r-l-1)/2錛堜笂鍙栨暣錛?*2+1
榪欐牱錛孉鐨勫彸瀛愮粨鐐逛笅鏍囧氨鏄疉+((r-l+1)/2錛堜笂鍙栨暣))*2錛屼篃灝辨槸A鍔犱笂澶т簬(r-l)鐨勬渶灝忕殑鍋舵暟錛?br />鍐欏湪浠g爜閲屽氨鏄細(xì)
int mid=l+r>>1;
opr(l, mid, A
+1);
opr(mid
+1, r, (r-l&1?A+r-l+1:A+r-l+2));
鎴栬咃紝鍊熷姪浣嶈繍綆楋紝鍙互鍏嶅幓鏉′歡鍒ゆ柇錛?
int mid=l+r>>1;
opr(l, mid, A
+1);
opr(mid
+1, r, A+r-l+2-((r^l)&1));
緇忔祴璇曪紝鍚庤咃紙浣跨敤浣嶈繍綆楃殑錛夎櫧鐒舵葷殑榪愮畻嬈℃暟澶氫簬鍓嶈咃紙浣跨敤鏉′歡鍒ゆ柇鐨勶級(jí)錛屼絾鍚庤呮瘮鍓嶈呭揩涓鐐圭偣錛屽叾鍘熷洜鍙兘涓嶤璇█涓殑鏉′歡榪愮畻絎﹂熷害杈冩參鏈夊叧錛?br />
榪欐牱錛屾垜浠氨鎴愬姛鍦板皢綰挎鏍?wèi)涓嬫爣鐨劷I洪棿鍒╃敤鐜囨彁楂樺埌浜?00%錛侊紒浠ュ悗鍙渶瑕佸紑2N絀洪棿灝辮浜?jiǎn)鍥?#8230;…
涓庝紶緇熻〃紺烘硶鐩告瘮錛岃繖縐嶆柊寮忚〃紺烘硶铏界劧鍙互鑺傜渷絀洪棿錛屼絾鏃墮棿娑堣楄鏇村ぇ涓浜涳紙鏃墮棿鍜岀┖闂存繪槸鐭涚浘鐨勫洤……錛夛紝鍥犱負(fù)瀹冨湪鎵懼彸瀛愮粨鐐圭殑鏃跺欓渶瑕佽緝澶氱殑榪愮畻銆傚鉤鍧囪搗鏉ワ紝鏂板紡琛ㄧず娉曟瘮浼犵粺琛ㄧず娉曡鎱?0~15%錛屽浜庢煇浜涘潙鐖圭殑鏁版嵁錛堝鍙沖瓙緇撶偣璋冪敤姣旇緝澶氱殑閭g錛夊彲鑳芥參寰楁洿澶氥傛澶栵紝鍦ㄤ笅鏀炬爣璁扮殑鏃跺欙紝浼犵粺琛ㄧず娉曞彧闇瑕佺煡閬撶粨鐐逛笅鏍囧氨琛屼簡(jiǎn)錛岃屾柊寮忚〃紺烘硶蹇呴』鍚屾椂鐭ラ亾緇撶偣鐨勫乏鍙崇鐐癸紝榪欐牱鍦╠m涓氨闇瑕佷紶閫掍笁涓弬鏁幫紝浠庤岃鎱竴浜涳紝褰撶劧錛屾垜浠彲浠ヤ笉鐢╠m錛岀洿鎺ュ湪鎿嶄綔閲岄潰鍐欐爣璁頒笅鏀俱?img src ="http://m.shnenglu.com/MatoNo1/aggbug/195857.html" width = "1" height = "1" />

Mato_No1 2012-12-01 12:11 鍙戣〃璇勮
]]>
銆怤OI2005 緇存姢鏁板垪(sequence)銆慡play Tree澶勭悊搴忓垪闂http://m.shnenglu.com/MatoNo1/archive/2011/06/21/149121.htmlMato_No1Mato_No1Tue, 21 Jun 2011 08:06:00 GMThttp://m.shnenglu.com/MatoNo1/archive/2011/06/21/149121.htmlhttp://m.shnenglu.com/MatoNo1/comments/149121.htmlhttp://m.shnenglu.com/MatoNo1/archive/2011/06/21/149121.html#Feedback0http://m.shnenglu.com/MatoNo1/comments/commentRss/149121.htmlhttp://m.shnenglu.com/MatoNo1/services/trackbacks/149121.html銆愬師棰樿榪欓噷銆?br />鏈鏄疭play Tree澶勭悊搴忓垪闂錛堜篃灝辨槸褰撶嚎孌墊爲(wèi)鐢級(jí)鐨勪竴涓吀鍨嬩緥棰樸?br />
Splay Tree涔嬫墍浠ュ彲浠ュ綋綰挎鏍?wèi)鐢ㄥQ屾槸鍥犱負(fù)瀹冨彲浠ユ敮鎸佷竴涓簭鍒楋紝鐒跺悗鐢?#8220;宸︾鍓嶈秼浼稿睍鍒版牴錛屽彸绔悗緇т幾灞曞埌鏍圭殑鍙沖瓙緇撶偣錛屽彇鏍圭殑鍙沖瓙緇撶偣鐨勫乏瀛愮粨鐐?#8221;榪欑浼稿睍鏂規(guī)硶錛屽涓涓簭鍒椾腑鐨勪竴鏁存榪涜鏁翠綋鎿嶄綔銆傜敱浜庤闃叉鍑虹幇鍓嶈秼鎴栧悗緇т笉瀛樺湪鐨勬儏鍐碉紝闇瑕佸湪榪欎釜搴忓垪鐨勪袱绔姞鍏ヤ袱涓竟鐣岀粨鐐癸紝瑕佹眰鍏跺間笉鑳藉獎(jiǎng)鍝嶅埌緇撶偣鍚勭璁拌澆淇℃伅鐨勭淮鎶わ紙澶氬彇0銆?#8734;鎴?∞錛夈傝繖涓や釜杈圭晫緇撶偣鍦ㄦ爲(wèi)涓案榪滃瓨鍦紝涓嶄細(xì)琚垹闄ゃ?br />
錛?錛夌粨鐐圭殑寮曠敤錛?br />鍦ㄥ綋綰挎鏍?wèi)鐢ㄧ殑Splay Tree涓紝鐪熸鐨勫叧閿瓧鏄笅鏍囪屼笉鏄鹼紝鍥犳錛?#8220;搴忓垪涓i涓粨鐐?#8221;瀹為檯涓婂搴旂殑鏄?#8220;鏍?wèi)涓W?i+1)灝忕殑緇撶偣”錛堝洜涓哄乏杈硅繕鏈変竴涓竟鐣岀粨鐐癸級(jí)錛岃繖灝辮鏄庡湪瀵圭粨鐐瑰紩鐢ㄦ椂闇瑕佹壘絎琄灝忕殑鎿嶄綔銆傚洜姝わ紝涓嬮潰鐨?#8220;緇撶偣x”鎸囩殑鏄?#8220;鏍?wèi)涓W?x+1)灝忕殑緇撶偣”銆?br />錛?錛夋爣璁幫細(xì)
鍦ㄧ嚎孌墊爲(wèi)涓紝濡傛灉瀵逛竴涓粨鐐規(guī)墍琛ㄧず鐨勭嚎孌墊暣浣撹繘琛屼簡(jiǎn)鏌愮鎿嶄綔錛岄渶瑕佸湪榪欎釜緇撶偣涓婃墦涓婁竴涓爣璁幫紝鍦ㄤ笅涓嬈″啀鎵懼埌榪欎釜緇撶偣鏃訛紝鍏舵爣璁板氨浼?xì)涓嬫攽謭板叾涓や釜瀛惥l撶偣涓娿傚湪Splay Tree涓篃鍙互寮曞叆鏍囪銆傛瘮濡傝瀵筟2, 6]榪欎竴孌佃繘琛屾暣浣撴搷浣滐紝灝卞皢緇撶偣1浼稿睍鍒版牴鐨勪綅緗紝灝嗙粨鐐?浼稿睍鍒版牴鐨勫彸瀛愭爲(wèi)鐨勪綅緗紝鐒跺悗緇撶偣7鐨勫乏瀛愭爲(wèi)灝辮〃紺篬2, 6]榪欎竴孌碉紝瀵硅繖媯靛瓙鏍?wèi)鐨勬牴缁撶傄?guī)墦涓婃爣璁板茍绔嬪嵆鐢熸晥錛堝繀欏繪槸绔嬪嵆鐢熸晥錛岃屼笉鏄瓑涓嬩竴嬈″紩鐢ㄥ啀鐢熸晥錛夛紝涔熷氨鏄珛鍗蟲(chóng)敼鍙樿緇撶偣璁板綍鐨勪竴浜涗俊鎭殑鍊箋傚鏋滀笅嬈″啀嬈″紩鐢ㄥ埌榪欎釜緇撶偣錛屽氨瑕佸皢鍏舵爣璁頒笅鏀懼埌鍏朵袱涓瓙緇撶偣澶勶紱
闇瑕佹敞鎰忕殑涓鐐規(guī)槸錛屽鏋滆浼稿睍鏌愪釜緇撶偣x鍒皉鐨勫瓙緇撶偣鐨勪綅緗紝灝卞繀欏諱繚璇佷粠x鍘熸潵鐨勪綅緗埌r鐨勮繖涓瓙緇撶偣錛坸浼稿睍鍚庣殑浣嶇疆錛変笂鐨勬墍鏈夌粨鐐逛笂鍧囨病鏈夋爣璁幫紝鍚﹀垯灝變細(xì)瀵艱嚧鏍囪娣蜂貢銆傚洜姝わ紝蹇呴』棣栧厛鎵懼埌榪欎釜緇撶偣x錛屽湪姝よ繃紼嬩腑涓嶆柇涓嬫斁鏍囪銆?br />錛?錛夎嚜搴曞悜涓婄淮鎶ょ殑淇℃伅錛?br />鏍囪鍙互鐪嬫垚涓縐嶈嚜欏跺悜涓嬬淮鎶ょ殑淇℃伅銆傞櫎浜?jiǎn)鏍囪C互澶栵紝浣滀負(fù)“綰挎鏍?#8221;錛屽線寰榪樿緇存姢涓浜涜嚜搴曞悜涓婄淮鎶ょ殑淇℃伅銆傛瘮濡傚湪sequence榪欓?shù)腑锛尀鏈塴max錛堝乏孌佃繛緇渶澶у拰錛夈乺max錛堝彸孌佃繛緇渶澶у拰錛夈乵idmax錛堝叏孌佃繛緇渶澶у拰錛変互鍙?qiáng)sum錛堝叏孌墊誨拰錛夌瓑淇℃伅瑕佺淮鎶ゃ傚浜庤繖綾諱笢涓滃叾瀹炰篃寰堝ソ鍔烇紝鍥犱負(fù)瀛愭爲(wèi)澶у皬錛坰z鍩燂級(jí)灝辨槸涓縐嶈嚜搴曞悜涓婄淮鎶ょ殑淇℃伅錛屽洜姝ゅ浜庤繖浜涗俊鎭彧瑕佹寜鐓х淮鎶z鍩熺殑鍔炴硶緇存姢鍗沖彲錛堢粺涓鍐欏湪upd鍑芥暟閲岋級(jí)銆傚敮涓鐨勪笉鍚岀偣鏄墦鏍囪鏃跺畠浠殑鍊煎彲鑳借鏀瑰彉銆?br />錛?錛夊榪炵畫(huà)鎻掑叆鐨勭粨鐐瑰緩鏍?wèi)锛?xì)
鏈鐨勬彃鍏ヤ笉鏄竴涓竴涓彃鍏ワ紝鑰屾槸涓涓嬪瓙鎻掑叆涓鏁存錛屽洜姝ら渶瑕佸厛灝嗗畠浠緩鎴愪竴媯墊爲(wèi)銆備竴鑸緩鏍?wèi)鎿嶄綔閮芥槸閫掑綊鐨勶紝榪欓噷涔熶竴鏍楓傝鐩墠瑕佸A[l..r]寤烘爲(wèi)錛圓涓哄緟鎻掑叆搴忓垪錛夛紝鑻>r鍒欓鍑猴紝鍚﹀垯鎵懼埌浣嶄簬涓棿鐨勫厓绱爉id = l + r >> 1錛屽皢A[mid]浣滄牴錛屽啀瀵笰[l..mid-1]寤哄乏瀛愭爲(wèi)錛屽A[mid+1..r]寤哄彸瀛愭爲(wèi)鍗沖彲銆傝繖鏍峰彲浠ヤ繚璇佷竴寮濮嬪緩鐨勫氨鏄竴媯靛鉤琛℃爲(wèi)錛屽噺灝忓父鏁板洜瀛愩?br />錛?錛夊洖鏀剁┖闂達(dá)細(xì)
鏍規(guī)嵁鏈鐨勬暟鎹寖鍥存彁紺猴紝鎻掑叆鐨勭粨鐐規(guī)繪暟鏈澶氬彲鑳借揪鍒?000000錛屼絾鍦ㄤ換浣曟椂鍒繪爲(wèi)涓渶澶氬彧鏈?00002涓粨鐐癸紙鍖呮嫭涓や釜杈圭晫錛夛紝姝ゆ椂涓轟簡(jiǎn)鑺傜渷絀洪棿錛屽彲浠ラ噰鐢ㄥ驚鐜槦鍒楀洖鏀剁┖闂寸殑鏂規(guī)硶銆傚嵆錛氫竴寮濮嬪皢鎵鏈夌殑鍙敤絀洪棿錛堝彲鐢ㄤ笅鏍囷紝鏈?shù)?~500002錛夊瓨鍦ㄥ驚鐜槦鍒桻閲岋紝鍚屾椂璁劇珛澶村熬鎸囬拡front鍜宺ear錛屾瘡嬈″鏋滄湁鏂扮粨鐐規(guī)彃鍏ワ紝灝卞彇鍑篞[front]騫朵綔涓烘柊緇撶偣鐨勪笅鏍囷紝濡傛灉鏈夌粨鐐硅鍒犻櫎錛堟湰棰樻槸涓嬈″垹闄ゆ暣媯靛瓙鏍?wèi)锛屽洜姝ゅ湪鍒犻櫎鍚庨渶瑕佸垎鍒洖鏀跺畠浠殑絀洪棿錛夛紝鍒欎粠rear寮濮嬶紝灝嗘瘡涓垹闄ょ殑緇撶偣鐨勪笅鏍囨斁鍥炲埌Q閲屻傚綋鐒?dòng)灱寴q欑鏂規(guī)硶鏄鐗虹壊涓瀹氱殑鏃墮棿鐨勶紝鍥犳鍦ㄧ┖闂翠笉鏄壒鍒悆绱х殑鎯呭喌涓嬩笉瑕佺敤銆?br />
銆?012騫?鏈?6鏃ユ洿鏂般?br />浠婂ぉ閲嶅啓sequence鐨勬椂鍊欙紝縐冪劧鍙戠幇鍔犲叆鐨勮竟鐣岀偣鍙兘浼?xì)瀵筶max銆乺max銆乵idmax絳夌殑緇存姢閫犳垚褰卞搷錛氬綋搴忓垪涓墍鏈夌殑鍊奸兘鏄礋鏁版椂錛岃嫢杈圭晫鐐圭殑鍊艱涓?錛屽皢浣胯繖3涓間篃涓?錛屾墍浠ワ紝杈圭晫鐐圭殑鍊煎簲璁句負(fù)-INF錛堜笉浼?xì)濯?jiǎng)鍝嶅埌sum錛屽洜涓哄彲浠ュ崟鐙皟鍑篬l, r]鐨剆um錛岄伩寮杈圭晫錛夈傝繖灝辮鏄庡茍闈炴墍鏈夎繖鏍風(fēng)殑棰樹(shù)腑閮藉彲浠ヨ緗竟鐣岀偣錛堟瘮濡侶FTSC2011鐨勯偅棰樺氨涓嶈錛夛紝濡傛灉杈圭晫鐐逛細(xì)瀵圭淮鎶ょ殑淇℃伅閫犳垚褰卞搷錛屽氨涓嶈兘璁劇疆杈圭晫鐐癸紝鍦ㄥ悇涓搷浣滀腑錛屽垎4縐嶆儏鍐靛垽鏂傦紙浠g爜宸茬粡淇敼錛?br />
涓嬮潰涓婁唬鐮佷簡(jiǎn)錛?
#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紲炵妵鐨勬湰棰樹(shù)唬鐮佽繘琛屾祴璇曟瘮杈冿紝緇撴灉錛圔YVoid紲炵妵鐨勪唬鐮佽榪欓噷錛夛細(xì)

BYVoid紲炵妵鐨勶細(xì)


鏈矙鑼剁殑錛?br />

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

Mato_No1 2011-06-21 16:06 鍙戣〃璇勮
]]>
嬈″皬鐢熸垚鏍?/title><link>http://m.shnenglu.com/MatoNo1/archive/2011/05/29/147627.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sun, 29 May 2011 08:03:00 GMT</pubDate><guid>http://m.shnenglu.com/MatoNo1/archive/2011/05/29/147627.html</guid><wfw:comment>http://m.shnenglu.com/MatoNo1/comments/147627.html</wfw:comment><comments>http://m.shnenglu.com/MatoNo1/archive/2011/05/29/147627.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.shnenglu.com/MatoNo1/comments/commentRss/147627.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/MatoNo1/services/trackbacks/147627.html</trackback:ping><description><![CDATA[<div>緇欏嚭涓涓甫杈規(guī)潈鐨勬棤鍚戝浘G錛岃鍏舵渶灝忕敓鎴愭爲(wèi)涓篢錛屾眰鍑哄浘G鐨勪笌T<span style="color: red"><strong>涓嶅畬鍏ㄧ浉鍚?/strong></span>鐨勮竟鏉冨拰鏈灝忕殑鐢熸垚鏍?wèi)锛堝嵆G鐨勬灝忕敓鎴愭爲(wèi)錛夈備竴涓棤鍚戝浘鐨勪袱媯電敓鎴愭爲(wèi)涓嶅畬鍏ㄧ浉鍚岋紝褰撲笖浠呭綋榪欎袱媯墊爲(wèi)涓嚦灝戞湁涓鏉¤竟涓嶅悓銆傛敞鎰忥紝鍥綠鍙兘涓嶈繛閫氾紝鍙兘鏈夊鉤琛岃竟錛屼絾涓瀹氭病鏈夎嚜鐜紙鍏跺疄瀵逛簬鑷幆涔熷緢濂藉鐞嗭細(xì)鐩存帴鑸嶅純銆傚洜涓虹敓鎴愭爲(wèi)涓笉鍙兘鍑虹幇鑷幆錛夈?br />銆愬叿浣撻鐩?a title="URAL1416" >URAL1416</a>錛堟敞鎰忥紝榪欎竴棰樼殑杈規(guī)暟M鐨勮寖鍥存病鏈夌粰鍑猴紝瑙嗕負(fù)124750錛?br />銆愬垎鏋愩?br />瀹氫箟鐢熸垚鏍?wèi)T鐨勪竴涓彲琛屽彉鎹?-E1, +E2)錛氬皢T涓殑杈笶1鍒犻櫎鍚庯紝鍐嶅姞鍏ヨ竟E2錛堟弧瓚寵竟E2鍘熸潵涓嶅湪T涓絾鍦℅涓級(jí)錛岃嫢寰楀埌鐨勪粛鐒舵槸鍥綠鐨勪竴媯電敓鎴愭爲(wèi)錛屽垯璇ュ彉鎹負(fù)鍙鍙樻崲錛岃鍙鍙樻崲鐨?strong style="color: red">浠d環(huán)</strong>涓?E2鏉冨?- E1鏉冨?銆傝繖鏍鳳紝寰堝鏄撹瘉鏄庯紝G鐨勬灝忕敓鎴愭爲(wèi)灝辨槸鐢盙鐨勬渶灝忕敓鎴愭爲(wèi)緇忚繃涓涓唬浠鋒渶灝忕殑鍙鍙樻崲寰楀埌銆傝繘涓姝ュ彲浠ュ彂鐜幫紝<strong style="color: red">榪欎釜浠d環(huán)鏈灝忕殑鍙鍙樻崲涓姞鍏ョ殑杈笶2鐨勪袱绔偣濡傛灉涓篤1鍜孷2錛岄偅涔圗1涓瀹氭槸鍘熸潵鏈灝忕敓鎴愭爲(wèi)涓粠V1鍒癡2鐨勮礬寰勪笂鐨勬潈鍊兼渶澶х殑杈?/strong>銆?br /><br />榪欐牱錛屽浜庢湰棰樺氨鏈変袱縐嶇畻娉曚簡(jiǎn)錛氾紙浠ヤ笅鐨凾鍏ㄩ儴鎸嘒鐨勬渶灝忕敓鎴愭爲(wèi)錛?br />錛?錛塒rim錛?br />璁劇珛鏁扮粍F錛孎[x][y]琛ㄧずT涓粠x鍒皔璺緞涓婄殑鏈澶ц竟鐨勬潈鍊箋侳鏁扮粍鍙互鍦ㄧ敤Prim綆楁硶姹傛渶灝忕敓鎴愭爲(wèi)鐨勮繃紼嬩腑寰楀嚭銆傛瘡嬈″皢杈?i, j)鍔犲叆鍚庯紙j鏄柊鍔犲叆鏍?wèi)鐨勮竟锛宨=c[j]錛夛紝鏋氫婦鏍?wèi)涓師鏈夌殑姣忎釜鐐筴錛堝寘鎷琲錛屼絾涓嶅寘鎷琷錛夛紝鍒橣[k][j]=max{F[k][i], (i, j)杈規(guī)潈鍊紏錛屽張鐢變簬F鏁扮粍鏄縐扮殑錛屽彲浠ュ緱鍒癋[j][k]=F[k][j]銆傜劧鍚庡崈涓囪浣忓皢鍥綠涓殑杈?i, j)鍒犻櫎錛堝氨鏄皢閭繪帴鐭╅樀涓?i, j)杈規(guī)潈鍊兼敼涓?#8734;錛夛紒鍥犱負(fù)T涓殑杈規(guī)槸涓嶈兘琚姞鍏ョ殑銆傜瓑T琚眰鍑哄悗錛屾墍鏈夌殑F鍊間篃姹傚嚭浜?jiǎn)锛岀劧鍚庡Q屾灇涓劇偣i銆乯錛岃嫢閭繪帴鐭╅樀涓竟(i, j)鏉冨間笉鏄棤絀峰ぇ錛堣繖璇存槑i銆乯闂村瓨鍦ㄤ笉鍦═涓殑杈癸級(jí)錛屽垯姹傚嚭{(i, j)杈規(guī)潈鍊?- F[i][j]}鐨勫鹼紝鍗充負(fù)鍔犲叆杈?i, j)鐨勪唬浠鳳紝姹傛渶灝忕殑鎬諱唬浠峰嵆鍙?br />鍙﹀娉ㄦ剰涓夌鐗規(guī)畩鎯呭喌錛氥?銆戝浘G涓嶈繛閫氾紝姝ゆ椂鏈灝忕敓鎴愭爲(wèi)鍜屾灝忕敓鎴愭爲(wèi)鍧囦笉瀛樺湪銆傚垽瀹氭柟娉曪細(xì)鍦ㄦ墿灞昑鐨勮繃紼嬩腑鎵句笉鍒版柊鐨勫彲浠ュ姞鍏ョ殑杈癸紱銆?銆戝浘G鏈韓灝辨槸涓媯墊爲(wèi)錛屾鏃舵渶灝忕敓鎴愭爲(wèi)瀛樺湪錛堝氨鏄疓鏈韓錛変絾嬈″皬鐢熸垚鏍?wèi)涓嶅瓨鍦ㄣ傚垽瀹氭柟娉曪細(xì)鍦ㄦ垚鍔熸眰鍑篢鍚庯紝鍙戠幇閭繪帴鐭╅樀涓殑鍊煎叏閮ㄦ槸鏃犵┓澶э紱銆?銆戝浘G瀛樺湪騫寵杈廣傝繖縐嶆儏鍐墊渶楹葷儲(chǔ)錛屽洜涓鴻繖鏃朵唬浠鋒渶灝忕殑鍙鍙樻崲(-E1, +E2)涓紝E1鍜孍2鍙兘鏄鉤琛岃竟錛佸洜姝わ紝鍙湁寤虹珛涓や釜閭繪帴鐭╅樀錛屽垎鍒瓨鍌ㄦ瘡涓ょ偣闂存潈鍊兼渶灝忕殑杈瑰拰鏉冨兼灝忕殑杈圭殑鏉冨鹼紝鐒跺悗錛屾瘡褰撲竴鏉℃柊杈?i, j)鍔犲叆鏃訛紝涓嶆槸灝嗛偦鎺ョ煩闃典腑杈?i, j)鏉冨兼敼涓烘棤絀峰ぇ錛岃屾槸鏀逛負(fù)榪炴帴鐐筰銆乯鐨勬潈鍊兼灝忕殑杈圭殑鏉冨箋?br /><br />浠g爜錛? <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<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 /></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"> re2(i, l, r) for (int i=l; i<r; 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">7000</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">int</span><span style="color: #000000"> n, s[MAXN][MAXN], s2[MAXN][MAXN], f[MAXN][MAXN], c[MAXN], v[MAXN], res1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">, res2 </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">bool</span><span style="color: #000000"> vst[MAXN];<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> init()<br />{<br />    freopen(</span><span style="color: #000000">"</span><span style="color: #000000">mst.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 />    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);<br />    re(i, n) re(j, n) s[i][j] </span><span style="color: #000000">=</span><span style="color: #000000"> s2[i][j] </span><span style="color: #000000">=</span><span style="color: #000000"> INF;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> m, a, b, len;<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 />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">m) {<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (n </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">) res1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF; res2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF;<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />    }<br />    re(i, m) {<br />        scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d%d</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">&</span><span style="color: #000000">a, </span><span style="color: #000000">&</span><span style="color: #000000">b, </span><span style="color: #000000">&</span><span style="color: #000000">len); a</span><span style="color: #000000">--</span><span style="color: #000000">; b</span><span style="color: #000000">--</span><span style="color: #000000">;<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (len </span><span style="color: #000000"><</span><span style="color: #000000"> s[a][b]) {s2[a][b] </span><span style="color: #000000">=</span><span style="color: #000000"> s2[b][a] </span><span style="color: #000000">=</span><span style="color: #000000"> s[a][b]; s[a][b] </span><span style="color: #000000">=</span><span style="color: #000000"> s[b][a] </span><span style="color: #000000">=</span><span style="color: #000000"> len;} </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span style="color: #0000ff">if</span><span style="color: #000000"> (len </span><span style="color: #000000"><</span><span style="color: #000000"> s2[a][b]) s2[a][b] </span><span style="color: #000000">=</span><span style="color: #000000"> s2[b][a] </span><span style="color: #000000">=</span><span style="color: #000000"> len;<br />    }<br />    fclose(stdin);<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> solve()<br />{<br />    re(i, n) {f[i][i] </span><span style="color: #000000">=</span><span style="color: #000000"> c[i] </span><span style="color: #000000">=</span><span style="color: #000000"> vst[i] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; v[i] </span><span style="color: #000000">=</span><span style="color: #000000"> s[</span><span style="color: #000000">0</span><span style="color: #000000">][i];} vst[</span><span style="color: #000000">0</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> l0, l1 </span><span style="color: #000000">=</span><span style="color: #000000"> INF, x, y, z;<br />    re2(i, </span><span style="color: #000000">1</span><span style="color: #000000">, n) {<br />        l0 </span><span style="color: #000000">=</span><span style="color: #000000"> INF; re(j, n) </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">vst[j] </span><span style="color: #000000">&&</span><span style="color: #000000"> v[j] </span><span style="color: #000000"><</span><span style="color: #000000"> l0) {l0 </span><span style="color: #000000">=</span><span style="color: #000000"> v[j]; x </span><span style="color: #000000">=</span><span style="color: #000000"> j; y </span><span style="color: #000000">=</span><span style="color: #000000"> c[j];}<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (l0 </span><span style="color: #000000">==</span><span style="color: #000000"> INF) {res1 </span><span style="color: #000000">=</span><span style="color: #000000"> res2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF; </span><span style="color: #0000ff">return</span><span style="color: #000000">;}<br />        vst[x] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">; res1 </span><span style="color: #000000">+=</span><span style="color: #000000"> l0; s[x][y] </span><span style="color: #000000">=</span><span style="color: #000000"> s[y][x] </span><span style="color: #000000">=</span><span style="color: #000000"> INF; </span><span style="color: #0000ff">if</span><span style="color: #000000"> (s2[x][y] </span><span style="color: #000000"><</span><span style="color: #000000"> INF </span><span style="color: #000000">&&</span><span style="color: #000000"> s2[x][y] </span><span style="color: #000000">-</span><span style="color: #000000"> l0 </span><span style="color: #000000"><</span><span style="color: #000000"> l1) l1 </span><span style="color: #000000">=</span><span style="color: #000000"> s2[x][y] </span><span style="color: #000000">-</span><span style="color: #000000"> l0;<br />        re(j, n) </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">vst[j] </span><span style="color: #000000">&&</span><span style="color: #000000"> s[x][j] </span><span style="color: #000000"><</span><span style="color: #000000"> v[j]) {v[j] </span><span style="color: #000000">=</span><span style="color: #000000"> s[x][j]; c[j] </span><span style="color: #000000">=</span><span style="color: #000000"> x;}<br />        re(j, n) </span><span style="color: #0000ff">if</span><span style="color: #000000"> (vst[j] </span><span style="color: #000000">&&</span><span style="color: #000000"> j </span><span style="color: #000000">!=</span><span style="color: #000000"> x) f[j][x] </span><span style="color: #000000">=</span><span style="color: #000000"> f[x][j] </span><span style="color: #000000">=</span><span style="color: #000000"> max(f[j][y], l0);<br />    }<br />    re(i, n</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">) re2(j, i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">, n) </span><span style="color: #0000ff">if</span><span style="color: #000000"> (s[i][j] </span><span style="color: #000000"><</span><span style="color: #000000"> INF) {<br />        z </span><span style="color: #000000">=</span><span style="color: #000000"> s[i][j] </span><span style="color: #000000">-</span><span style="color: #000000"> f[i][j];<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (z </span><span style="color: #000000"><</span><span style="color: #000000"> l1) l1 </span><span style="color: #000000">=</span><span style="color: #000000"> z;<br />    }<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (l1 </span><span style="color: #000000">==</span><span style="color: #000000"> INF) res2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF; </span><span style="color: #0000ff">else</span><span style="color: #000000"> res2 </span><span style="color: #000000">=</span><span style="color: #000000"> res1 </span><span style="color: #000000">+</span><span style="color: #000000"> l1;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> pri()<br />{<br />    freopen(</span><span style="color: #000000">"</span><span style="color: #000000">mst.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 />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">Cost: %d\nCost: %d\n</span><span style="color: #000000">"</span><span style="color: #000000">, res1 </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</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">1</span><span style="color: #000000"> : res1, res2 </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</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">1</span><span style="color: #000000"> : res2);<br />    fclose(stdout);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main()<br />{<br />    init();<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">res2) solve();<br />    pri();<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><span>鏁堢巼鍒嗘瀽錛歅rim綆楁硶姹傛灝忕敓鎴愭爲(wèi)</span><span>鐨勬椂絀哄鏉傚害鍧囦負(fù)O(N</span><sup>2</sup><span>)銆?/span><br /><br /><span>錛?錛塊ruskal錛?/span><br /><span>Kruskal綆楁硶涔熷彲浠ョ敤鏉ユ眰嬈″皬鐢熸垚鏍?wèi)銆傚湪鍑嗗鍔犲叆涓鏉℃柊杈?a, b)錛堣杈瑰姞鍏ュ悗涓嶄細(xì)鍑虹幇鐜級(jí)鏃訛紝閫夋嫨鍘熸潵a鎵鍦ㄨ繛閫氬潡錛堣涓篠1錛変笌b鎵鍦ㄨ繛閫氬潡錛堣涓篠2錛?/span><span>涓紝</span><strong style="color: red">鐐圭殑涓暟灝戠殑閭d釜</strong>錛堝鏋滈殢渚塊変竴涓紝鏈鍧忔儏鍐典笅鍙兘姣忔閮界鍒扮偣鏁板鐨勯偅涓紝鏃墮棿澶嶆潅搴﹀彲鑳藉鑷砄(NM)錛夛紝鎵懼埌璇ヨ繛閫氬潡涓殑姣忎釜鐐筰錛屽茍閬嶅巻鎵鏈変笌i鐩稿叧鑱旂殑杈癸紝鑻ュ彂鐜版煇鏉¤竟鐨勫彟涓绔偣j鍦ㄦ湭閫夋嫨鐨勯偅涓繛閫氬潡涓紙涔熷氨鏄杈?i, j)璺ㄨ秺浜?jiǎn)S1鍜孲2錛夋椂錛屽氨璇存槑鏈緇堝湪T涓?鍒犻櫎杈?a, b)騫跺姞鍏ヨ杈?涓瀹氭槸涓涓彲琛屽彉鎹紝涓旂敱浜庡姞杈規(guī)槸鎸夌収鏉冨奸掑欏哄簭鐨勶紝(a, b)涔熶竴瀹氭槸T涓粠i鍒癹璺緞涓婃潈鍊兼渶澶х殑杈癸紝鏁呰繖涓彲琛屽彉鎹㈠彲鑳芥垚涓轟唬浠鋒渶灝忕殑鍙鍙樻崲錛岃綆楀叾浠d環(huán)涓篬(i, j)杈規(guī)潈鍊?- (a, b)杈規(guī)潈鍊糫錛屽彇鏈灝忎唬浠峰嵆鍙傛敞鎰忥紝鍦ㄩ亶鍘嗘椂闇瑕佹帓闄や竴鏉¤竟錛屽氨鏄?a, b)鏈韓錛堝叿浣撳疄鐜版椂鐢變簬鐢―L杈硅〃錛屽彲浠ュ皢杈?a, b)鐨勭紪鍙蜂唬鍏ワ級(jí)銆傚彟澶栬繕鏈変竴涓毦鎼炵殑鍦版柟錛氬浣曞揩閫熸壘鍑烘煇榪為氬潡鍐呯殑鎵鏈夌偣錛熸柟娉曪細(xì)鐢變簬浣跨敤騫舵煡闆嗭紝榪為氬潡鏄敤鏍?wèi)鐨勬柟寮忓瓨鍌ㄧ殑锛屽彲浠ョ洿鎺ュ晦Z竴媯墊爲(wèi)錛堝噯紜潵璇存槸涓涓.鏋楋級(jí)錛岀敤“鏈宸﹀瓙緇撶偣+鐩擱偦緇撶偣”琛ㄧず錛屽垯鎵懼嚭鏍?wèi)鏍瑰悗閬嶅巻杩檵倝|爲(wèi)灝辮浜?jiǎn)锛屽彟澶栨敞鎰忓湪鍚堯q惰繛閫氬潡鏃朵篃瑕佸悓鏃跺悎騫舵爲(wèi)銆?br />瀵逛簬涓夌鐗規(guī)畩鎯呭喌錛氥?銆戝浘G涓嶈繛閫氥傚垽瀹氭柟娉曪細(xì)閬嶅巻瀹屾墍鏈夌殑杈瑰悗錛屽疄闄呭姞鍏鐨勮竟鏁板皬浜?N-1)錛涖?銆戝浘G鏈韓灝辨槸涓媯墊爲(wèi)銆傚垽瀹氭柟娉曪細(xì)鎵句笉鍒拌繖鏍風(fēng)殑杈?i, j)錛涖?銆戝浘G瀛樺湪騫寵杈廣傝繖涓浜嶬ruskal鏉ヨ瀹屽叏鍙互鏃犺錛屽洜涓篕ruskal涓袱鏉¤竟鍙緙栧彿涓嶅悓灝辮涓轟笉鍚岀殑杈廣?br />鍏跺疄Kruskal綆楁硶姹傛灝忕敓鎴愭爲(wèi)榪樻湁涓涓紭鍖栵細(xì)姣忔鎵懼埌杈?i, j)鍚庯紝涓澶勭悊瀹岃繖鏉¤竟灝辨妸瀹冧粠鍥句腑鍒犳帀錛屽洜涓哄綋S1鍜孲2鍚堝茍鍚庯紝(i, j)灝辨案榪滀笉鍙兘鍐嶆槸鍙鍙樻崲涓殑E2浜?jiǎn)銆?br /><br />浠g爜錛?br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<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">stdlib.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"> re3(i, l, r) for (int i=l; i<=r; 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">7000</span><span style="color: #000000">, MAXM </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">130000</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"> edge {<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> a, b, len, pre, next;<br />} ed[MAXM </span><span style="color: #000000">+</span><span style="color: #000000"> MAXM];<br /></span><span style="color: #0000ff">struct</span><span style="color: #000000"> edge2 {<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> a, b, len, No;<br />} ed2[MAXM];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> n, m </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">, m2, u[MAXN], ch[MAXN], nx[MAXN], q[MAXN], res1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">, res2 </span><span style="color: #000000">=</span><span style="color: #000000"> INF;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> init_d()<br />{<br />    re(i, n) ed[i].a </span><span style="color: #000000">=</span><span style="color: #000000"> ed[i].pre </span><span style="color: #000000">=</span><span style="color: #000000"> ed[i].next </span><span style="color: #000000">=</span><span style="color: #000000"> i;<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (n </span><span style="color: #000000">%</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">) m </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">1</span><span style="color: #000000">; </span><span style="color: #0000ff">else</span><span style="color: #000000"> m </span><span style="color: #000000">=</span><span style="color: #000000"> n;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> add_edge(</span><span style="color: #0000ff">int</span><span style="color: #000000"> a, </span><span style="color: #0000ff">int</span><span style="color: #000000"> b, </span><span style="color: #0000ff">int</span><span style="color: #000000"> l)<br />{<br />    ed[m].a </span><span style="color: #000000">=</span><span style="color: #000000"> a; ed[m].b </span><span style="color: #000000">=</span><span style="color: #000000"> b; ed[m].len </span><span style="color: #000000">=</span><span style="color: #000000"> l; ed[m].pre </span><span style="color: #000000">=</span><span style="color: #000000"> ed[a].pre; ed[m].next </span><span style="color: #000000">=</span><span style="color: #000000"> a; ed[a].pre </span><span style="color: #000000">=</span><span style="color: #000000"> m; ed[ed[m].pre].next </span><span style="color: #000000">=</span><span style="color: #000000"> m</span><span style="color: #000000">++</span><span style="color: #000000">;<br />    ed[m].a </span><span style="color: #000000">=</span><span style="color: #000000"> b; ed[m].b </span><span style="color: #000000">=</span><span style="color: #000000"> a; ed[m].len </span><span style="color: #000000">=</span><span style="color: #000000"> l; ed[m].pre </span><span style="color: #000000">=</span><span style="color: #000000"> ed[b].pre; ed[m].next </span><span style="color: #000000">=</span><span style="color: #000000"> b; ed[b].pre </span><span style="color: #000000">=</span><span style="color: #000000"> m; ed[ed[m].pre].next </span><span style="color: #000000">=</span><span style="color: #000000"> m</span><span style="color: #000000">++</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> del_edge(</span><span style="color: #0000ff">int</span><span style="color: #000000"> No)<br />{<br />    ed[ed[No].pre].next </span><span style="color: #000000">=</span><span style="color: #000000"> ed[No].next; ed[ed[No].next].pre </span><span style="color: #000000">=</span><span style="color: #000000"> ed[No].pre;<br />    ed[ed[No </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">].pre].next </span><span style="color: #000000">=</span><span style="color: #000000"> ed[No </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">].next; ed[ed[No </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">].next].pre </span><span style="color: #000000">=</span><span style="color: #000000"> ed[No </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">].pre;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> init()<br />{<br />    freopen(</span><span style="color: #000000">"</span><span style="color: #000000">mst.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 />    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">n, </span><span style="color: #000000">&</span><span style="color: #000000">m2);<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">m2) {<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (n </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">) res1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF;<br />        res2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF; </span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />    }<br />    init_d();<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> a, b, len;<br />    re(i, m2) {<br />        scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d%d</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">&</span><span style="color: #000000">a, </span><span style="color: #000000">&</span><span style="color: #000000">b, </span><span style="color: #000000">&</span><span style="color: #000000">len);<br />        ed2[i].No </span><span style="color: #000000">=</span><span style="color: #000000"> m; add_edge(</span><span style="color: #000000">--</span><span style="color: #000000">a, </span><span style="color: #000000">--</span><span style="color: #000000">b, len);<br />        ed2[i].a </span><span style="color: #000000">=</span><span style="color: #000000"> a; ed2[i].b </span><span style="color: #000000">=</span><span style="color: #000000"> b; ed2[i].len </span><span style="color: #000000">=</span><span style="color: #000000"> len;<br />    }<br />    fclose(stdin);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> cmp(</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">s1, </span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">s2)<br />{<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> ((edge2 </span><span style="color: #000000">*</span><span style="color: #000000">)s1)</span><span style="color: #000000">-></span><span style="color: #000000">len </span><span style="color: #000000">-</span><span style="color: #000000"> ((edge2 </span><span style="color: #000000">*</span><span style="color: #000000">)s2)</span><span style="color: #000000">-></span><span style="color: #000000">len;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> prepare()<br />{<br />    re(i, n) u[i] </span><span style="color: #000000">=</span><span style="color: #000000"> ch[i] </span><span style="color: #000000">=</span><span style="color: #000000"> nx[i] </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br />    qsort(ed2, m2, </span><span style="color: #000000">16</span><span style="color: #000000">, cmp);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> find(</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"> r </span><span style="color: #000000">=</span><span style="color: #000000"> x, r0 </span><span style="color: #000000">=</span><span style="color: #000000"> x, tmp;<br />    </span><span style="color: #0000ff">while</span><span style="color: #000000"> (u[r] </span><span style="color: #000000">>=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">) r </span><span style="color: #000000">=</span><span style="color: #000000"> u[r];<br />    </span><span style="color: #0000ff">while</span><span style="color: #000000"> (u[r0] </span><span style="color: #000000">>=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">) {tmp </span><span style="color: #000000">=</span><span style="color: #000000"> u[r0]; u[r0] </span><span style="color: #000000">=</span><span style="color: #000000"> r; r0 </span><span style="color: #000000">=</span><span style="color: #000000"> tmp;}<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> r;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> uni(</span><span style="color: #0000ff">int</span><span style="color: #000000"> r1, </span><span style="color: #0000ff">int</span><span style="color: #000000"> r2, </span><span style="color: #0000ff">int</span><span style="color: #000000"> No, </span><span style="color: #0000ff">int</span><span style="color: #000000"> l0)<br />{<br />    q[</span><span style="color: #000000">0</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> r1;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> j, k, l1, front, rear;<br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (front</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">, rear</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; front</span><span style="color: #000000"><=</span><span style="color: #000000">rear; front</span><span style="color: #000000">++</span><span style="color: #000000">) {<br />        j </span><span style="color: #000000">=</span><span style="color: #000000"> ch[q[front]];<br />        </span><span style="color: #0000ff">while</span><span style="color: #000000"> (j </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">) {<br />            q[</span><span style="color: #000000">++</span><span style="color: #000000">rear] </span><span style="color: #000000">=</span><span style="color: #000000"> j;<br />            j </span><span style="color: #000000">=</span><span style="color: #000000"> nx[j];<br />        }<br />    }<br />    re3(i, </span><span style="color: #000000">0</span><span style="color: #000000">, rear) {<br />        j </span><span style="color: #000000">=</span><span style="color: #000000"> q[i];<br />        </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> p</span><span style="color: #000000">=</span><span style="color: #000000">ed[j].next; p </span><span style="color: #000000">!=</span><span style="color: #000000"> j; p</span><span style="color: #000000">=</span><span style="color: #000000">ed[p].next) {<br />            k </span><span style="color: #000000">=</span><span style="color: #000000"> ed[p].b;<br />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (p </span><span style="color: #000000">!=</span><span style="color: #000000"> No </span><span style="color: #000000">&&</span><span style="color: #000000"> find(k) </span><span style="color: #000000">==</span><span style="color: #000000"> r2) {<br />                l1 </span><span style="color: #000000">=</span><span style="color: #000000"> ed[p].len </span><span style="color: #000000">-</span><span style="color: #000000"> l0;<br />                </span><span style="color: #0000ff">if</span><span style="color: #000000"> (l1 </span><span style="color: #000000"><</span><span style="color: #000000"> res2) res2 </span><span style="color: #000000">=</span><span style="color: #000000"> l1;<br />                del_edge(p);<br />            }<br />        }<br />    }<br />    u[r2] </span><span style="color: #000000">+=</span><span style="color: #000000"> u[r1]; u[r1] </span><span style="color: #000000">=</span><span style="color: #000000"> r2; nx[r1] </span><span style="color: #000000">=</span><span style="color: #000000"> ch[r2]; ch[r2] </span><span style="color: #000000">=</span><span style="color: #000000"> r1;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> solve()<br />{<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> r1, r2, l0, num </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    re(i, m2) {<br />        r1 </span><span style="color: #000000">=</span><span style="color: #000000"> find(ed2[i].a); r2 </span><span style="color: #000000">=</span><span style="color: #000000"> find(ed2[i].b);<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (r1 </span><span style="color: #000000">!=</span><span style="color: #000000"> r2) {<br />            l0 </span><span style="color: #000000">=</span><span style="color: #000000"> ed2[i].len; res1 </span><span style="color: #000000">+=</span><span style="color: #000000"> l0; num</span><span style="color: #000000">++</span><span style="color: #000000">;<br />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (u[r1] </span><span style="color: #000000">>=</span><span style="color: #000000"> u[r2]) uni(r1, r2, ed2[i].No, l0); </span><span style="color: #0000ff">else</span><span style="color: #000000"> uni(r2, r1, ed2[i].No </span><span style="color: #000000">^</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">, l0);<br />        }<br />    }<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (num </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">1</span><span style="color: #000000">) {res1 </span><span style="color: #000000">=</span><span style="color: #000000"> res2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF; </span><span style="color: #0000ff">return</span><span style="color: #000000">;}<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (res2 </span><span style="color: #000000">==</span><span style="color: #000000"> INF) res2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">INF; </span><span style="color: #0000ff">else</span><span style="color: #000000"> res2 </span><span style="color: #000000">+=</span><span style="color: #000000"> res1;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> pri()<br />{<br />    freopen(</span><span style="color: #000000">"</span><span style="color: #000000">mst.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 />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">Cost: %d\nCost: %d\n</span><span style="color: #000000">"</span><span style="color: #000000">, res1 </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</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">1</span><span style="color: #000000"> : res1, res2 </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</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">1</span><span style="color: #000000"> : res2);<br />    fclose(stdout);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main()<br />{<br />    init();<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">res1 </span><span style="color: #000000">&&</span><span style="color: #000000"> res2 </span><span style="color: #000000">==</span><span style="color: #000000"> INF) {<br />        prepare();<br />        solve();<br />    }<br />    pri();<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>鏁堢巼鍒嗘瀽錛氬彲浠ヨ瘉鏄庯紝濡傛灉姣忔閮介夊彇鐐瑰皯鐨勮繛閫氬潡錛孠ruskal綆楁硶姹傛灝忕敓鎴愭爲(wèi)鐨勬椂闂村鏉傚害涓篛(M*(logN+logM))錛岀┖闂村鏉傚害涓篛(M)銆?br />鎬葷粨錛氭樉鐒禤rim閫傜敤浜庣瀵嗗浘錛岃孠ruskal閫傜敤浜庣█鐤忓浘銆?br /><br />涓嬮潰鏄浜庝竴浜涙暟鎹殑嫻嬭瘯緇撴灉錛堟暟鎹鏄庯細(xì)絎?~9涓偣鍜岀15涓偣涓虹瀵嗗浘鎴栦竴鑸浘錛岀10~14涓偣涓虹█鐤忓浘錛?br /><br />Prim錛?br /><img height="194" alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/嬈″皬鐢熸垚鏍?wèi)_Prim.jpg" width="333" border="0" /><br /><br />Kruskal錛堝姞鍏ュ垹杈逛紭鍖栵級(jí)錛?br /><img height="195" alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/嬈″皬鐢熸垚鏍?wèi)_Kruskal1.jpg" width="340" border="0" /><br /><br />Kruskal錛堟湭鍔犲垹杈逛紭鍖栵級(jí)錛?br /><img height="195" alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/嬈″皬鐢熸垚鏍?wèi)_Kruskal2.jpg" width="340" border="0" /><br /></div><img src ="http://m.shnenglu.com/MatoNo1/aggbug/147627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-05-29 16:03 <a href="http://m.shnenglu.com/MatoNo1/archive/2011/05/29/147627.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>profit鏄庢牱琚玈AP鐨勫璺騫胯檺鐖嗙殑鈥︹?/title><link>http://m.shnenglu.com/MatoNo1/archive/2011/03/19/142225.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sat, 19 Mar 2011 09:55:00 GMT</pubDate><guid>http://m.shnenglu.com/MatoNo1/archive/2011/03/19/142225.html</guid><wfw:comment>http://m.shnenglu.com/MatoNo1/comments/142225.html</wfw:comment><comments>http://m.shnenglu.com/MatoNo1/archive/2011/03/19/142225.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.shnenglu.com/MatoNo1/comments/commentRss/142225.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/MatoNo1/services/trackbacks/142225.html</trackback:ping><description><![CDATA[<p>浠g爜1錛歋AP鍗曡礬澧炲箍錛堥潪閫掑綊錛夛紱</p> <p>浠g爜2錛歋AP澶氳礬澧炲箍錛堥掑綊錛夛紱</p> <p>浠g爜3錛欴inic鍗曡礬澧炲箍錛堥潪閫掑綊錛夛紱</p> <p>浠g爜4錛欴inic澶氳礬澧炲箍錛堥掑綊錛夛紱</p> <p>緇撴灉錛?/p> <p>浠g爜1錛?br><img height=146 alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/SAP1.jpg" width=331 border=0></p> 浠g爜2錛?<br><img height=147 alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/SAP2.jpg" width=336 border=0><br>浠g爜3錛?br><img height=145 alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/Dinic1.jpg" width=337 border=0><br> 浠g爜4錛?br><img height=147 alt="" src="http://m.shnenglu.com/images/cppblog_com/matono1/嫻嬭瘎緇撴灉/Dinic2.jpg" width=337 border=0><br>緇撴灉錛?br>SAP鍔犱簡(jiǎn)澶氳礬澧炲箍鍚庯紝鐩存帴縐掓帀鍚?涓偣錛?br>Dinic鍔犱簡(jiǎn)澶氳礬澧炲箍鍚庢晥鐜囧樊涓嶅錛岃繕鏇翠綆浜?jiǎn)涓鐐?#8230;…<br><br>錛堝彟澶栧彂鐜幫紝SAP鐨勫璺騫夸笉鏀寔褰撳墠寮т紭鍖?#8230;…榪欑偣鍜寊kw璐圭敤嫻佹湁鐐瑰儚鍥?#8230;…涓嶈繃鏁堢巼褰卞搷涓嶅ぇ……錛?br> <img src ="http://m.shnenglu.com/MatoNo1/aggbug/142225.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-03-19 17:55 <a href="http://m.shnenglu.com/MatoNo1/archive/2011/03/19/142225.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.shamba.com.cn" target="_blank">精品蜜臀久久久久99网站</a>| <a href="http://www.juzijia.cn" target="_blank">一本伊大人香蕉久久网手机</a>| <a href="http://www.aving.com.cn" target="_blank">精品久久久无码21p发布</a>| <a href="http://www.wlvq.cn" target="_blank">久久精品九九亚洲精品</a>| <a href="http://www.shaikr.cn" target="_blank">精品99久久aaa一级毛片</a>| <a href="http://www.b8800.cn" target="_blank">亚洲第一极品精品无码久久</a>| <a href="http://www.yunqichaoyang.cn" target="_blank">国产精品无码久久四虎</a>| <a href="http://www.662z.cn" target="_blank">久久99亚洲网美利坚合众国</a>| <a href="http://www.cate365.cn" target="_blank">青青草原综合久久大伊人导航</a>| <a href="http://www.f-lover.cn" target="_blank">69国产成人综合久久精品</a>| <a href="http://www.uxiw.cn" target="_blank">大香伊人久久精品一区二区</a>| <a href="http://www.baidudianying.cn" target="_blank">久久亚洲欧美日本精品</a>| <a href="http://www.999966.com.cn" target="_blank">午夜天堂精品久久久久</a>| <a href="http://www.mir155.cn" target="_blank">亚洲国产成人久久一区WWW</a>| <a href="http://www.5i5xp.cn" target="_blank">国产免费福利体检区久久</a>| <a href="http://www.zhouyimen.cn" target="_blank">老色鬼久久亚洲AV综合</a>| <a href="http://www.juruse.com.cn" target="_blank">青青草原综合久久大伊人</a>| <a href="http://www.b947.cn" target="_blank">老司机午夜网站国内精品久久久久久久久</a>| <a href="http://www.kqtao.cn" target="_blank">亚洲va中文字幕无码久久不卡</a>| <a href="http://www.wyj405.cn" target="_blank">一97日本道伊人久久综合影院</a>| <a href="http://www.modellesson.cn" target="_blank">99久久婷婷国产一区二区</a>| <a href="http://www.jhcplm.cn" target="_blank">精品乱码久久久久久久</a>| <a href="http://www.ahsxd.org.cn" target="_blank">亚洲精品无码久久一线</a>| <a href="http://www.xiaodaoyl.cn" target="_blank">一本色道久久88精品综合</a>| <a href="http://www.dgzcwdlaw.cn" target="_blank">精品伊人久久久</a>| <a href="http://www.dl-dr.cn" target="_blank">久久WWW免费人成一看片</a>| <a href="http://www.jrtz232.cn" target="_blank">中文字幕乱码久久午夜</a>| <a href="http://www.hp6000.cn" target="_blank">久久狠狠爱亚洲综合影院 </a>| <a href="http://www.waihuimaoyi.cn" target="_blank">天天影视色香欲综合久久</a>| <a href="http://www.56dn.cn" target="_blank">色综合合久久天天综合绕视看</a>| <a href="http://www.shangbi.com.cn" target="_blank">久久er99热精品一区二区</a>| <a href="http://www.fz-tm.cn" target="_blank">99久久久国产精品免费无卡顿</a>| <a href="http://www.lrv9.cn" target="_blank">久久久免费精品re6</a>| <a href="http://www.gay4u.cn" target="_blank">99久久精品费精品国产一区二区</a>| <a href="http://www.xyszgh.cn" target="_blank">69久久夜色精品国产69</a>| <a href="http://www.bihuresorthotel.cn" target="_blank">久久精品国产免费一区</a>| <a href="http://www.iqyyh.cn" target="_blank">国产精品成人无码久久久久久</a>| <a href="http://www.cxwlvip.cn" target="_blank">久久涩综合</a>| <a href="http://www.whpcjs.cn" target="_blank">无码人妻少妇久久中文字幕蜜桃</a>| <a href="http://www.yangrendong.com.cn" target="_blank">麻豆成人久久精品二区三区免费</a>| <a href="http://www.gdlj2004.cn" target="_blank">韩国无遮挡三级久久</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>