锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲麻豆av,亚洲激情视频在线播放,亚洲免费观看高清在线观看 http://www.shnenglu.com/ACflying/KNIGHT zh-cn Sat, 15 Nov 2025 20:39:25 GMT Sat, 15 Nov 2025 20:39:25 GMT 60 poj 3648 Wedding http://www.shnenglu.com/ACflying/archive/2009/06/07/86997.htmlKNIGHT KNIGHT Sun, 07 Jun 2009 09:19:00 GMT http://www.shnenglu.com/ACflying/archive/2009/06/07/86997.html http://www.shnenglu.com/ACflying/comments/86997.html http://www.shnenglu.com/ACflying/archive/2009/06/07/86997.html#Feedback 3 http://www.shnenglu.com/ACflying/comments/commentRss/86997.html http://www.shnenglu.com/ACflying/services/trackbacks/86997.html Wedding
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 821
Accepted: 249
Special Judge
Description
Up to thirty couples will attend a wedding feast, at which they will be seated on either side of a long table. The bride and groom sit at one end, opposite each other, and the bride wears an elaborate headdress that keeps her from seeing people on the same side as her. It is considered bad luck to have a husband and wife seated on the same side of the table. Additionally, there are several pairs of people conducting adulterous relationships (both different-sex and same-sex relationships are possible), and it is bad luck for the bride to see both members of such a pair. Your job is to arrange people at the table so as to avoid any bad luck.
Input
The input consists of a number of test cases, followed by a line containing 0 0. Each test case gives n , the number of couples, followed by the number of adulterous pairs, followed by the pairs, in the form "4h 2w" (husband from couple 4, wife from couple 2), or "10w 4w", or "3h 1h". Couples are numbered from 0 to n - 1 with the bride and groom being 0w and 0h.
Output
For each case, output a single line containing a list of the people that should be seated on the same side as the bride. If there are several solutions, any one will do. If there is no solution, output a line containing "bad luck".
Sample Input
10 6
3h 7h
5w 3w
7h 6w
8w 3w
7h 3w
2w 5h
0 0
Sample Output
1h 2h 3w 4h 5h 6h 7h 8h 9h
Source
Waterloo Local Contest , 2007.9.29
銆傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘?br />閮侀椃銆傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘傘?br />鎼炵殑涓涓嬪崍銆傘傘傘傘傘傘傘傘傘傘傘傘傘傘傞敊浜哊嬈°傘傘傘?br />棰樼洰寰圵S鏈鍚庝粠璇諱竴閬嶃傘傘傘傘傘傘傘傘傜粓浜庤鎳傘傘傘傘傘?br />楗挎鎴戜簡銆傘傘傘傘傘傘傘傘傘傘傘傘傘傝繕涓嶄細鏋勫浘銆傘傘傘傘傘?br />鍏堝悆楗紝鍥炴潵鍦ㄦ悶銆傘傘傘傘傘傘傦紝浠婂ぉ灝辮繖5閬撻榪樺洶闅句簡銆傘傘傞儊闂楓?br />--------------------------------------------------------------------------------------------------------------------------------------------------------------
2009.6.8聽 22:34聽聽
浠g爜寰堜笐涓嶈創(chuàng)浜嗭紝鍐嶆湁6鍒嗛挓灝辯唲鐏簡銆傘傘傘傘傝漢涓嬫兂浜嗕竴浼氭劅瑙変竴璧鋒濊礬鏄鐨勫氨鏄病鏈夎冭檻0w-銆?h鐨勮繖鏉¤竟銆傘傘傘?br />緇撴灉涓鏀逛箣銆傘傘傘傘傘傘傘傘傘侫C聽聽
2009-06-08 22:33:58 AC鏃墮棿聽 AC瀹屼簡涔嬪悗璇翠簡涓や釜瀛椻滄垜鏃モ濊楄垂浜嗕袱縐掗挓銆傜劧鍚庣洿鎺ユ墦寮Blog銆備粖鏅氱粓浜庢悶鍑烘潵浜? 鎰熻阿鎸囧嚭Bug鐨勫ぇ鐗涖?br />鍟婏紝鑷範浜嗐併併併併併併併併併併併併併併併併併併併併併併併併併併併併併併併併併併併?br /> ]]> poj 3678 Priest John's Busiest Day http://www.shnenglu.com/ACflying/archive/2009/06/07/86966.htmlKNIGHT KNIGHT Sun, 07 Jun 2009 02:39:00 GMT http://www.shnenglu.com/ACflying/archive/2009/06/07/86966.html http://www.shnenglu.com/ACflying/comments/86966.html http://www.shnenglu.com/ACflying/archive/2009/06/07/86966.html#Feedback 0 http://www.shnenglu.com/ACflying/comments/commentRss/86966.html http://www.shnenglu.com/ACflying/services/trackbacks/86966.html 寮濮嬬殑鏃跺欐湰浠ヤ負涓嶇敤鎷撴墤錛岃屽湪瑙佸浘鐨勬椂鍊欏叏閮ㄥ緩鎴愭棤鍚戝浘銆傘傘傘傜粨鏋滀笉璦鑰屽柣 閮ㄥ垎浠g爜濡備笅錛?br />#include < iostream > #include< stack > #include< vector > #define 聽MAXN聽2100 using 聽 namespace 聽std; vector < int > v[MAXN],nv[MAXN],cont[MAXN]; int 聽pre[MAXN],low[MAXN],id[MAXN]; int 聽ans[MAXN],dfn[MAXN]; int 聽cnt,scnt,n,m,N; stack < int > ST; struct 聽NODE { 聽聽聽聽 int 聽x,y;聽聽聽聽 } arr[MAXN]; void 聽Tarjan( int 聽x) { 聽聽聽聽 int 聽t,i; 聽聽聽聽 int 聽min = low[x] = pre[x] = cnt ++ ; 聽聽聽聽ST.push(x); 聽聽聽聽 for (i = 0 ;i < v[x].size();i ++ ) { 聽聽聽聽聽聽聽聽t = v[x][i]; 聽聽聽聽聽聽聽聽 if (pre[t] ==- 1 )Tarjan(t); 聽聽聽聽聽聽聽聽 if (low[t] < min)min = low[t]; 聽聽聽聽} 聽聽聽聽if (min < low[x]) { 聽聽聽聽聽聽聽聽low[x] = min; 聽聽聽聽聽聽聽聽 return ; 聽聽聽聽} 聽聽聽聽do { 聽聽聽聽聽聽聽聽id[t = ST.top()] = scnt; 聽聽聽聽聽聽聽聽low[t] = m;ST.pop(); 聽聽聽聽} while (t != x); 聽聽聽聽scnt ++ ; } int 聽SCC() { 聽聽聽聽scnt = cnt = 0 ; 聽聽聽聽 while ( ! ST.empty())ST.pop(); 聽聽聽聽memset(pre, 0xff , sizeof (pre)); 聽聽聽聽memset(low, 0 , sizeof (low)); 聽聽聽聽 for ( int 聽i = 0 ;i < m;i ++ ) 聽聽聽聽聽聽聽聽 if (pre[i] ==- 1 )Tarjan(i); 聽聽聽聽 for ( int 聽i = 0 ;i < m;i ++ ) 聽聽聽聽聽聽聽聽cont[id[i]].push_back(i); 聽聽聽聽 return 聽scnt; } void 聽DFS( int 聽k) { 聽聽聽聽dfn[k] = cnt ++ ; 聽聽聽聽 for ( int 聽i = 0 ;i < nv[k].size();i ++ ) { 聽聽聽聽聽聽聽聽 int 聽w = nv[k][i]; 聽聽聽聽聽聽聽聽 if (dfn[w] ==- 1 )DFS(w);聽 聽聽聽聽} 聽聽 聽聽聽聽ans[scnt ++ ] = k;聽聽聽聽聽聽聽聽聽聽聽聽聽 } void 聽ColDFS( int 聽k) { 聽聽聽聽dfn[k] = 2 ; 聽聽聽聽 for ( int 聽i = 0 ;i < nv[k].size();i ++ ) { 聽聽聽聽聽聽聽聽 int 聽w = nv[k][i]; 聽聽聽聽聽聽聽聽 if (dfn[w] ==- 1 )ColDFS(w); 聽聽聽聽} 聽聽聽聽聽聽聽聽聽聽 } void 聽GetOneAnswer() { 聽聽聽聽memset(dfn, 0xff , sizeof (dfn)); 聽聽聽聽 for ( int 聽i = 0 ;i < m;i ++ ) 聽聽聽聽聽聽聽聽 for ( int 聽j = 0 ;j < v[i].size();j ++ ) { 聽聽聽聽聽聽聽聽聽聽聽聽 int 聽x = id[i],y = id[v[i][j]]; 聽聽聽聽聽聽聽聽聽聽聽聽 if (x != y)nv[x].push_back(y);聽聽聽聽 聽聽聽聽聽聽聽聽} 聽聽聽聽cnt= scnt = 0 ; 聽聽聽聽 for ( int 聽i = 0 ;i < N;i ++ ) 聽聽聽聽聽聽聽聽 if (dfn[i] ==- 1 )DFS(i); 聽聽聽聽memset(dfn, 0xff , sizeof (dfn)); 聽聽聽聽 for ( int 聽i = scnt - 1 ;i >= 0 ;i -- ) 聽聽聽聽聽聽聽聽 if (dfn[ans[i]] ==- 1 )聽 { 聽聽聽聽聽聽聽聽聽聽聽聽 int 聽a = cont[ans[i]][ 0 ],b;聽 聽聽聽聽聽聽聽聽聽聽聽聽 if (a < n)b = a + n; 聽聽聽聽聽聽聽聽聽聽聽聽 else 聽b = a - n; 聽聽聽聽聽聽聽聽聽聽聽聽dfn[ans[i]] = 1 ; 聽聽聽聽聽聽聽聽聽聽聽聽 if 聽(dfn[id[b]] ==- 1 )ColDFS(id[b]);聽 聽聽聽聽聽聽聽聽} }void 聽PRINTF() { 聽聽聽聽printf( " YES\n " ); 聽聽聽聽GetOneAnswer(); 聽聽聽聽 for ( int 聽i = 0 ;i < n;i ++ ) { 聽聽聽聽聽聽聽聽 int 聽x = arr[i].x,y = arr[i].y; 聽聽聽聽聽聽聽聽 int 聽tx = arr[i + n].x,ty = arr[i + n].y; 聽聽聽聽聽聽聽聽 if (dfn[id[i]] == 2 )printf( " %02d:%02d聽%02d:%02d\n " ,x / 60 ,x % 60 ,y / 60 ,y % 60 ); 聽聽聽聽聽聽聽聽 else 聽printf( " %02d:%02d聽%02d:%02d\n " ,tx / 60 ,tx % 60 ,ty / 60 ,ty % 60 ); 聽聽聽聽} 聽聽聽聽 } void 聽solve() { 聽聽聽聽 int 聽i = 0 ; 聽聽聽聽 for (N = SCC();i < n;i ++ ) 聽聽聽聽聽聽聽聽 if (id[i] == id[n + i]) break ; 聽聽聽聽 if (i == n)PRINTF(); 聽聽聽聽 else 聽printf( " NO\n " );聽聽聽聽 } ]]> poj 3207 Ikki's Story IV - Panda's Trick http://www.shnenglu.com/ACflying/archive/2009/06/06/86939.htmlKNIGHT KNIGHT Sat, 06 Jun 2009 12:12:00 GMT http://www.shnenglu.com/ACflying/archive/2009/06/06/86939.html http://www.shnenglu.com/ACflying/comments/86939.html http://www.shnenglu.com/ACflying/archive/2009/06/06/86939.html#Feedback 0 http://www.shnenglu.com/ACflying/comments/commentRss/86939.html http://www.shnenglu.com/ACflying/services/trackbacks/86939.html 緇撴灉浠庤涔嬪悗鍙堝洜涓虹晫闄怶a浜嗕竴嬈°傘傘傘傛檿 47ms姣旇緝鎱紝鍙兘鏄嬌鐢ㄤ簡STL鐨剉ector鍜宻tack鐨勫師鍥犲惂 閮ㄥ垎浠g爜濡備笅#include < iostream > #include< stack > #include< vector > #define 聽MAXN聽1200 using 聽 namespace 聽std; int 聽pre[MAXN],low[MAXN],id[MAXN]; int 聽cnt,scnt,n,N,M; vector < int > v[MAXN]; stack < int > ST; struct 聽NODE { 聽聽聽聽 int 聽x,y;聽聽聽聽 } arr[MAXN]; void 聽Tarjan( int 聽x) { 聽聽聽聽 int 聽t,i; 聽聽聽聽 int 聽min = low[x] = pre[x] = cnt ++ ; 聽聽聽聽ST.push(x); 聽聽聽聽 for (i = 0 ;i < v[x].size();i ++ ) { 聽聽聽聽聽聽聽聽t = v[x][i]; 聽聽聽聽聽聽聽聽 if (pre[t] ==- 1 )Tarjan(t); 聽聽聽聽聽聽聽聽 if (low[t] < min)min = low[t]; 聽聽聽聽} 聽聽聽聽if (min < low[x]) { 聽聽聽聽聽聽聽聽low[x] = min; 聽聽聽聽聽聽聽聽 return ; 聽聽聽聽} 聽聽聽聽do { 聽聽聽聽聽聽聽聽id[t = ST.top()] = scnt; 聽聽聽聽聽聽聽聽low[t] = n;ST.pop(); 聽聽聽聽} while (t != x); 聽聽聽聽scnt ++ ; } int 聽SCC() { 聽聽聽聽scnt = cnt = 0 ; 聽聽聽聽memset(pre, 0xff , sizeof (pre)); 聽聽聽聽memset(low, 0 , sizeof (low)); 聽聽聽聽 for ( int 聽i = 0 ;i < n;i ++ ) 聽聽聽聽聽聽聽聽 if (pre[i] ==- 1 )Tarjan(i); 聽聽聽聽 return 聽scnt; } ]]> 嫻呰皥2鈥擲AT闂 http://www.shnenglu.com/ACflying/archive/2009/06/06/86912.htmlKNIGHT KNIGHT Sat, 06 Jun 2009 07:00:00 GMT http://www.shnenglu.com/ACflying/archive/2009/06/06/86912.html http://www.shnenglu.com/ACflying/comments/86912.html http://www.shnenglu.com/ACflying/archive/2009/06/06/86912.html#Feedback 0 http://www.shnenglu.com/ACflying/comments/commentRss/86912.html http://www.shnenglu.com/ACflying/services/trackbacks/86912.html
2-SAT錛?/strong>
1
2
-
SAT灝辨槸2鍒ゅ畾鎬ч棶棰橈紝鏄竴縐嶇壒孌婄殑閫昏緫鍒ゅ畾闂銆?br />
2
2
-
SAT闂鏈変綍鐗規(guī)畩鎬э紵璇ュ浣曟眰瑙o紵
3
鎴戜滑浠庝竴閬撲緥棰樻潵璁よ瘑2
-
SAT闂錛屽茍鎻愬嚭瀵逛竴綾?
-
SAT闂閫氱敤鐨勮В娉曘?br />
4
Poi聽
0106
聽Peaceful聽Commission聽[鍜屽鉤濮斿憳浼歖錛?br /> 鏌愬浗鏈塶涓厷媧撅紝姣忎釜鍏氭淳鍦ㄨ浼氫腑鎭版湁2涓唬琛ㄣ?br /> 鐜板湪瑕佹垚绔嬪拰騫沖鍛樹細聽錛岃浼氭弧瓚籌細 姣忎釜鍏氭淳鍦ㄥ拰騫沖鍛樹細涓湁涓斿彧鏈変竴涓唬琛?br /> 濡傛灉鏌愪袱涓唬琛ㄤ笉鍜岋紝鍒欎粬浠笉鑳介兘灞炰簬濮斿憳浼毬?br /> 浠h〃鐨勭紪鍙蜂粠1鍒?n錛岀紪鍙蜂負2a
-
1
銆?a鐨勪唬琛ㄥ睘浜庣a涓厷媧?br />
杈撳叆n錛堝厷媧炬暟錛夛紝m錛堜笉鍙嬪ソ瀵規(guī)暟錛夊強m瀵逛袱涓や笉鍜岀殑浠h〃緙栧彿聽 鍏朵腑1鈮鈮?/span>
8000
錛?/span>
0
鈮聽鈮?/span>
20000
聽 姹傚拰騫沖鍛樹細鏄惁鑳藉垱绔嬨傝嫢鑳斤紝姹備竴縐嶆瀯鎴愭柟寮忋偮?br /> 杈撳叆錛毬犅犅犅犅犺緭鍑猴細
3
聽
2
聽聽聽聽聽聽聽
1
聽聽聽聽聽聽聽聽
1
聽
3
聽聽聽聽聽聽聽
4
聽聽聽聽聽聽聽聽聽聽
2
聽
4
聽聽聽聽聽聽聽
5
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
鍘熼鍙弿榪頒負錛?br /> 鏈塶涓粍錛岀i涓粍閲屾湁涓や釜鑺傜偣Ai,聽Ai
'
聽銆傞渶瑕佷粠姣忎釜緇勪腑閫夊嚭涓涓傝屾煇浜涚偣涓嶅彲浠ュ悓鏃墮夊嚭錛堢О涔嬩負涓嶇浉瀹癸級銆備換鍔℃槸淇濊瘉閫夊嚭鐨刵涓偣閮借兘涓や袱鐩稿銆?/span>
錛堝湪榪欓噷鎶夾i,聽Ai
'
聽鐨勫畾涔夌◢紼嶆斁瀹戒竴浜涳紝瀹冧滑鍚屾椂琛ㄧず灞炰簬鍚屼竴涓粍鐨勪袱涓妭鐐廣備篃灝辨槸璇達紝濡傛灉鎴戜滑鎻忚堪Ai錛岄偅涔堟弿榪拌繖涓粍鐨勫彟涓涓妭鐐瑰氨鍙互鐢ˋi
'
錛?br />
鍒濇鏋勫浘 濡傛灉Ai涓嶢j涓嶇浉瀹癸紝閭d箞濡傛灉閫夋嫨浜咥i錛屽繀欏婚夋嫨Aj鈥樎狅紱鍚屾牱錛屽鏋滈夋嫨浜咥j錛屽氨蹇呴』閫夋嫨Ai鈥櫬犮?br /> 聽聽聽Ai聽聽聽聽聽聽聽聽聽聽聽聽聽Aj
'
聽聽聽Aj聽聽聽聽聽聽聽聽聽聽聽聽聽Ai鈥樎犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅犅?br /> 榪欐牱鐨勪袱鏉¤竟瀵圭О
鎴戜滑浠庝竴涓緥瀛愭潵鐪嬶細 鍋囪4涓粍錛屼笉鍜岀殑浠h〃涓猴細1鍜?錛?鍜?錛?鍜?錛岄偅涔堟瀯鍥撅細 鍋囪錛氶鍏堥?聽3蹇呴』閫夛紝2涓嶅彲閫壜?蹇呴』閫夛紝
4
銆?涓嶅彲閫壜?/span>
5
銆?鍙互浠婚変竴涓?br /> 聽
鐭涚浘鐨勬儏鍐典負錛?br /> 瀛樺湪Ai錛屼嬌寰桝i鏃㈠繀欏昏閫夊張涓嶅彲閫夈?br /> 聽 寰楀埌綆楁硶1錛?br /> 鏋氫婦姣忎竴瀵瑰皻鏈‘瀹氱殑Ai,聽Ai鈥樎狅紝浠婚?涓紝鎺ㄥ鍑虹浉鍏崇殑緇勶紝鑻ヤ笉鐭涚浘錛屽垯鍙夋嫨錛涘惁鍒欓夊彟1涓紝鍚屾牱鎺ㄥ銆傝嫢鐭涚浘錛岄棶棰樺繀瀹氭棤瑙c?br /> 姝ょ畻娉曟紜х畝瑕佽鏄庯細 鐢變簬Ai,Ai
'
聽閮芥槸灝氭湭紜畾鐨勶紝瀹冧滑涓嶄笌涔嬪墠鐨勭粍鐩稿叧鑱旓紝鍓嶉潰鐨勯夋嫨涓嶄細褰卞搷Ai,聽Ai
'
聽銆?br /> 綆楁硶鐨勬椂闂村鏉傚害鍦ㄦ渶鍧忕殑鎯呭喌涓嬩負O(nm)銆?br /> 鍦ㄨ繖涓畻娉曚腑錛屽茍娌℃湁寰堝ソ鐨勫埄鐢ㄥ浘涓竟鐨勫縐版?br />
鏇翠竴鑸殑璇達細 鍦ㄦ瘡涓竴涓幆閲岋紝浠繪剰涓涓偣鐨勯夋嫨浠h〃灝嗚閫夋嫨姝ょ幆閲岀殑姣忎竴涓偣銆備笉濡ㄦ妸鐜敹緙╂垚涓涓瓙鑺傜偣錛堣瀹氳繖鏍風殑鐜槸鏋佸ぇ寮鴻繛閫氬瓙鍥撅級銆傛柊鑺傜偣鐨勯夋嫨琛ㄧず閫夋嫨榪欎釜鑺傜偣鎵瀵瑰簲鐨勭幆涓殑姣忎竴涓妭鐐? 瀵逛簬鍘熷浘涓殑姣忔潯杈笰i
->
Aj錛堣Ai灞炰簬鐜疭i錛孉j灞炰簬鐜疭j錛夊鏋淪i鈮燬j錛屽垯鍦ㄦ柊鍥句腑榪炶竟:Si
->
Sj 榪欐牱鏋勯犲嚭涓涓柊鐨勬湁鍚戞棤鐜浘銆?br /> 姝ゅ浘涓庡師鍥劇瓑浠楓?br />
閫氳繃姹傚己榪為氬垎閲忥紝鍙互鎶婂浘杞崲鎴愭柊鐨勬湁鍚戞棤鐜浘錛屽湪榪欎釜鍩虹涓婏紝浠嬬粛涓涓柊鐨勭畻娉曘?br /> 鏂扮畻娉曚腑錛屽鏋滃瓨鍦ㄤ竴瀵笰i,聽Ai
'
灞炰簬鍚屼竴涓幆錛屽垯鍒ゆ棤瑙o紝鍚﹀垯灝嗛噰鐢ㄦ嫇鎵戞帓搴忥紝浠ヨ嚜搴曞悜涓婄殑欏哄簭榪涜鎺ㄥ錛屼竴瀹氳兘鎵懼埌鍙瑙c?/span>
鑷充簬榪欎釜綆楁硶鐨勫緱鏉ュ強姝g‘鎬э紝灝嗗湪涓嬩竴孌墊枃瀛椾腑榪涜璇︾粏鍒嗘瀽銆?br /> 鍥炲繂鏋勫浘鐨勮繃紼嬶細 瀵逛簬涓や釜涓嶇浉瀹圭殑鐐孤燗i,聽Aj錛屾瀯鍥炬柟寮忎負錛欰i
->
Aj
'
,Aj->Ai
'
,鍓嶉潰鎻愬埌榪囷紝榪欐牱鐨勪袱鏉¤竟瀵圭О錛屼篃灝辨槸璇達細 濡傛灉瀛樺湪Ai
->
Aj錛屽繀瀹氬瓨鍦ˋj
'
->Ai
'
銆?br /> 絳変環(huán)浜庯細Ai
->
Ak,Ak
'
->Ai
'
聽鏂逛究璧瘋錛屼箣鍚庘?/span>
->
鈥濅唬琛ㄨ繖鏍蜂竴縐嶄紶閫掑叧緋?
鐚滄祴1錛氬浘涓殑鐜垎鍒縐?br /> 濡傛灉瀛樺湪Ai,Aj錛孉i,Aj灞炰簬鍚屼竴涓幆(璁頒綔Si),閭d箞Ai
'
,聽Aj
'
涔熷繀瀹氬睘浜庝竴涓幆(璁頒綔Si
'
).
鍐嶆牴鎹墠闈㈢殑寮曠悊錛屼笉闅炬帹鏂嚭姣忎釜鐜垎鍒縐般偮?br /> 璇佹槑鏂瑰紡涓庡紩鐞嗙浉綾諱技 涓涓◢紼嶅鏉傜偣鐨勭粨鏋?鍏朵腑綰€佽摑鑹查儴鍒嗗垎鍒負涓ょ粍瀵圭О鐨勯摼緇撴瀯 鎺ㄥ箍2錛氬浜庝換鎰忎竴瀵筍i,聽Si
'
聽錛孲i鐨勫悗浠h妭鐐逛笌Si
'
聽鐨勫墠浠h妭鐐圭浉浜掑縐般偮?br /> 緇ц屾彁鍑? 鐚滄祴2錛氳嫢闂鏃犺В錛屽垯蹇呯劧瀛樺湪Ai,聽Ai
'
聽錛屼嬌寰桝i,Ai
'
灞炰簬鍚屼竴涓幆銆備篃灝辨槸錛屽鏋滄瘡涓瀵笰i,Ai
'
聽閮戒笉灞炰簬鍚屼竴涓幆錛岄棶棰樺繀瀹氭湁瑙c備笅闈㈢粰鍑虹畝鐣ヨ瘉鏄庯細
鍏堟彁鍑轟竴涓窡綆楁硶1鐩鎬技鐨勬楠わ細聽 濡傛灉閫夋嫨Si錛岄偅涔堝浜庢墍鏈塖i
->
Sj錛孲j閮藉繀欏昏閫夋嫨銆偮?br /> 鑰孲i
'
聽蹇呭畾涓嶅彲閫夛紝榪欐牱Si鈥欑殑鎵鏈夊墠浠h妭鐐逛篃蹇呭畾涓嶅彲閫夛紙灝嗚繖涓榪囩▼縐頒箣涓哄垹闄わ級銆?/span>
鐢辨帹騫?鍙互寰楀埌錛岃繖鏍風殑鍒犻櫎涓嶄細瀵艱嚧鐭涚浘銆?br /> 鍋囪閫夋嫨S3
'
聽
飪犻夋嫨S3
'
鐨勫悗浠h妭鐐?聽S1
'
飪犲垹闄3 飪犲垹闄3鐨勫墠浠h妭鐐筍1 S1涓嶴1
'
鏄縐扮殑
姣忔鎵懼埌涓涓湭琚‘瀹氱殑Si錛屼嬌寰椾笉瀛樺湪Si
->
Si
'
聽閫夋嫨Si鍙婂叾鍚庝唬鑺傜偣鑰屽垹闄i鈥欏強Si鈥樼殑鍓嶄唬鑺傜偣銆備竴瀹氬彲浠ユ瀯閫犲嚭涓緇勫彲琛岃В銆?/span>
鍥犳鐚滄祴2鎴愮珛銆?br /> 鍙﹀錛岃嫢姣忔鐩茬洰鐨勫幓鎵句竴涓湭琚‘瀹氱殑Si錛屾椂闂村鏉傚害鐩稿綋楂樸?br /> 浠ヨ嚜搴曞悜涓婄殑欏哄簭榪涜閫夋嫨銆佸垹闄わ紝榪欐牱榪樺彲浠ュ厤鍘燴滈夋嫨Si鐨勫悗浠h妭鐐光濊繖涓姝ャ?br /> 鐢ㄦ嫇鎵戞帓搴忓疄鐜拌嚜搴曞悜涓婄殑欏哄簭銆?br /> 涓緇勫彲鑳界殑鎷撴墤搴忓垪(鑷簳鍚戜笂錛?S1
'
,S2,S2
'
,S3
'
,S3,S1
綆楁硶2鐨勬祦紼嬶細聽
1
錛庢瀯鍥?br />
2
錛庢眰鍥劇殑鏋佸ぇ寮鴻繛閫氬瓙鍥?br />
3
錛庢妸姣忎釜瀛愬浘鏀剁緝鎴愬崟涓妭鐐癸紝鏍規(guī)嵁鍘熷浘鍏崇郴鏋勯犱竴涓湁鍚戞棤鐜浘
4
錛庡垽鏂槸鍚︽湁瑙o紝鏃犺В鍒欒緭鍑猴紙閫鍑猴級
5
錛庡鏂板浘榪涜鎷撴墤鎺掑簭
6
錛庤嚜搴曞悜涓婅繘琛岄夋嫨銆佸垹闄?br />
7
錛庤緭鍑?br /> 灝忕粨錛?br /> 鏁翠釜綆楁硶鐨勬椂闂村鏉傚害澶ф鏄疧(m)錛岃В鍐蟲闂鍙互璇存槸鐩稿綋鏈夋晥浜嗐?br /> 鍦ㄦ暣涓畻娉曠殑鏋勯犮佽瘉鏄庝腑鍙嶅鎻愬埌浜嗕竴涓瘝錛氬縐般傚彂鐜般佸埄鐢ㄤ簡榪欎釜鍥劇殑鐗規(guī)畩鎬ц川錛屾垜浠墠鑳藉寰堝ソ鐨勮В鍐抽棶棰樸?br /> 騫朵笖錛岀敱2
-
SAT闂妯″瀷鍙樻崲鍑虹殑綾諱技鐨勯鐩兘鍙互鐢ㄤ笂榪版柟娉曡В鍐熾偮?br /> 鍏ㄦ枃鎬葷粨錛?br /> 鍏呭垎鎸栨帢鍥劇殑鎬ц川錛岃兘澶熸洿濂界殑瑙e喅闂銆?br /> 涓嶄粎浠呮槸瀵逛簬鍥捐錛岃繖縐嶆濇兂鍙互鍦ㄥ緢澶氶棶棰樹腑寰楀埌寰堝ソ鐨勫簲鐢ㄣ?br /> 甯屾湜鎴戜滑鑳芥帉鎻℃縐嶈В棰樼殑鎬濇兂錛屽湪鐔熺粌鍩虹綆楁硶鐨勫悓鏃舵繁鍏ュ垎鏋愩佺伒媧昏繍鐢ㄣ佸ぇ鑳嗗垱鏂幫紝浠庤岃В鍐蟲洿澶氭洿鏂扮殑闅鵑銆?br />
]]>鍐沖畾鑰冪爺銆傘傘?/title> http://www.shnenglu.com/ACflying/archive/2009/05/31/86315.htmlKNIGHT KNIGHT Sun, 31 May 2009 13:44:00 GMT http://www.shnenglu.com/ACflying/archive/2009/05/31/86315.html http://www.shnenglu.com/ACflying/comments/86315.html http://www.shnenglu.com/ACflying/archive/2009/05/31/86315.html#Feedback 0 http://www.shnenglu.com/ACflying/comments/commentRss/86315.html http://www.shnenglu.com/ACflying/services/trackbacks/86315.html 浠庢涓鑺傝涓嶉冦傘傘傘傘傚懆鍏紝鍛ㄦ棩鍘?73.鎴栬呯湅璧勬枡銆傘傘?br />Bless pip! ]]> 鍐欑偣澶存枃浠朵箣綾?/title> http://www.shnenglu.com/ACflying/archive/2009/05/29/86120.htmlKNIGHT KNIGHT Fri, 29 May 2009 14:14:00 GMT http://www.shnenglu.com/ACflying/archive/2009/05/29/86120.html http://www.shnenglu.com/ACflying/comments/86120.html http://www.shnenglu.com/ACflying/archive/2009/05/29/86120.html#Feedback 0 http://www.shnenglu.com/ACflying/comments/commentRss/86120.html http://www.shnenglu.com/ACflying/services/trackbacks/86120.html #define 聽MFW()聽freopen("MyData.out","w",stdout); #define 聽FW()聽freopen("Data.out","w",stdout); #define 聽FR()聽freopen("Data.in","r",stdin); #define 聽FOR(s,i,t)聽for(i=s;i<=t;i++) #define 聽FUCK聽puts("Fuck聽You!"); #define 聽PAUSE聽system("pause"); #define 聽getmax(x,y)聽x>y?x:y; #define 聽getmin(x,y)聽x<y?x:y; #define 聽Abs(x)聽x>0?x?-x; #define 聽OK聽puts("OK!"); #define 聽INF聽0x7fffffff #define 聽MIO聽FR()FW() #define 聽IO聽FR()FW() #define 聽MAXN聽1200 #define 聽EPS聽1E-8 #include< algorithm > #include< iostream > #include< string > #include< vector > #include< bitset > #include< queue > #include< stack > #include< list > #include< map > #include< set > int 聽main() { 聽聽聽聽IO聽OK聽 } ]]> [ZZ]鍚庣紑鏁扮粍 http://www.shnenglu.com/ACflying/archive/2009/05/28/86031.htmlKNIGHT KNIGHT Thu, 28 May 2009 11:53:00 GMT http://www.shnenglu.com/ACflying/archive/2009/05/28/86031.html http://www.shnenglu.com/ACflying/comments/86031.html http://www.shnenglu.com/ACflying/archive/2009/05/28/86031.html#Feedback 2 http://www.shnenglu.com/ACflying/comments/commentRss/86031.html http://www.shnenglu.com/ACflying/services/trackbacks/86031.html
鍦ㄥ瓧絎︿覆澶勭悊褰撲腑錛屽悗緙鏍戝拰鍚庣紑鏁扮粍閮芥槸闈炲父鏈夊姏鐨勫伐鍏鳳紝鍏朵腑鍚庣紑鏍戝ぇ瀹朵簡瑙e緱姣旇緝澶氾紝鍏充簬鍚庣紑鏁扮粍鍒欏緢灝戣浜庡浗鍐呯殑璧勬枡銆傚叾瀹炲悗緙鏁扮粍鏄悗緙鏍戠殑涓涓潪甯哥簿宸х殑鏇夸唬鍝侊紝瀹冩瘮鍚庣紑鏍戝鏄撶紪紼嬪疄鐜幫紝鑳藉瀹炵幇鍚庣紑鏍戠殑寰堝鍔熻兘鑰屾椂闂村鏉傚害涔熶笉澶婅壊錛屽茍涓旓紝瀹冩瘮鍚庣紑鏍戞墍鍗犵敤鐨勭┖闂村皬寰堝銆傚彲浠ヨ錛屽湪淇℃伅瀛︾珵璧涗腑鍚庣紑鏁扮粍姣斿悗緙鏍戣鏇翠負瀹炵敤銆傚洜姝ゅ湪鏈枃涓瑪鑰呮兂浠嬬粛涓涓嬪悗緙鏁扮粍鐨勫熀鏈蹇點佹瀯閫犳柟娉曪紝浠ュ強閰嶅悎鍚庣紑鏁扮粍鐨勬渶闀垮叕鍏卞墠緙鏁扮粍鐨勬瀯閫犳柟娉曪紝鏈鍚庣粨鍚堜竴浜涗緥瀛愯皥璋堝悗緙鏁扮粍鐨勫簲鐢ㄣ? 鍩烘湰姒傚康 棣栧厛鏄庣‘涓浜涘繀瑕佺殑瀹氫箟錛? 瀛楃闆?涓涓瓧絎﹂泦鈭戞槸涓涓緩绔嬩簡鍏ㄥ簭鍏崇郴鐨勯泦鍚堬紝涔熷氨鏄錛屸垜涓殑浠繪剰涓や釜涓嶅悓鐨勫厓绱犖卞拰尾閮藉彲浠ユ瘮杈冨ぇ灝忥紝瑕佷箞偽<尾錛岃涔埼?lt;偽錛堜篃灝辨槸偽>尾錛夈傚瓧絎﹂泦鈭戜腑鐨勫厓绱犵О涓哄瓧絎︺? 瀛楃涓?涓涓瓧絎︿覆S鏄皢n涓瓧絎﹂『嬈℃帓鍒楀艦鎴愮殑鏁扮粍錛宯縐頒負S鐨勯暱搴︼紝琛ㄧず涓簂en(S)銆係鐨勭i涓瓧絎﹁〃紺轟負S[i]銆? 瀛愪覆 瀛楃涓睸鐨勫瓙涓睸[i..j]錛宨鈮錛岃〃紺篠涓蹭腑浠巌鍒癹榪欎竴孌碉紝涔熷氨鏄『嬈℃帓鍒桽[i],S[i+1],...,S[j]褰㈡垚鐨勫瓧絎︿覆銆? 鍚庣紑 鍚庣紑鏄寚浠庢煇涓綅緗甶寮濮嬪埌鏁翠釜涓叉湯灝劇粨鏉熺殑涓涓壒孌婂瓙涓層傚瓧絎︿覆S鐨勪粠i寮澶寸殑鍚庣紑琛ㄧず涓篠uffix(S,i)錛屼篃灝辨槸Suffix(S,i)=S[i..len(S)]銆? 鍏充簬瀛楃涓茬殑澶у皬姣旇緝錛屾槸鎸囬氬父鎵璇寸殑鈥滃瓧鍏擱『搴忊濇瘮杈冿紝涔熷氨鏄浜庝袱涓瓧絎︿覆u銆乿錛屼護i浠?寮濮嬮『嬈℃瘮杈僽[i]鍜寁[i]錛屽鏋滅浉絳夊垯浠鍔?錛屽惁鍒欒嫢u[i]<v[i]鍒欒涓簎<v錛寀[i]>v[i]鍒欒涓簎>v錛堜篃灝辨槸v<u錛夛紝姣旇緝緇撴潫銆傚鏋渋>len (u)鎴栬卛>len(v)浠嶆湭姣旇緝鍑虹粨鏋滐紝閭d箞鑻en(u)<len(v)鍒欒涓簎<v錛岃嫢len(u)=len(v)鍒欒涓簎= v錛岃嫢len(u)>len(v)鍒檜>v銆? 浠庡瓧絎︿覆鐨勫ぇ灝忔瘮杈冪殑瀹氫箟鏉ョ湅錛孲鐨勪袱涓紑澶翠綅緗笉鍚岀殑鍚庣紑u鍜寁榪涜姣旇緝鐨勭粨鏋滀笉鍙兘鏄浉絳夛紝鍥犱負u=v鐨勫繀瑕佹潯浠秎en(u)=len(v)鍦ㄨ繖閲屼笉鍙兘婊¤凍銆? 涓嬮潰鎴戜滑綰﹀畾涓涓瓧絎﹂泦鈭戝拰涓涓瓧絎︿覆S錛岃len(S)=n錛屼笖S[n]='$'錛屼篃灝辨槸璇碨浠ヤ竴涓壒孌婂瓧絎?$'緇撳熬錛屽茍涓?$'灝忎簬鈭戜腑鐨勪換浣曚竴涓瓧絎︺傞櫎浜哠[n]涔嬪錛孲涓殑鍏朵粬瀛楃閮藉睘浜庘垜銆傚浜庣害瀹氱殑瀛楃涓睸錛屼粠浣嶇疆i寮澶寸殑鍚庣紑鐩存帴鍐欐垚Suffix(i)錛岀渷鍘誨弬鏁癝銆? 鍚庣紑鏁扮粍 鍚庣紑鏁扮粍SA鏄竴涓竴緇存暟緇勶紝瀹冧繚瀛?..n鐨勬煇涓帓鍒桽A[1],SA[2],...SA[n]錛屽茍涓斾繚璇?Suffix(SA[i])<Suffix(SA[i+1]),1鈮<n銆備篃灝辨槸灝哠鐨刵涓悗緙浠庡皬鍒板ぇ榪涜鎺掑簭涔嬪悗鎶婃帓濂藉簭鐨勫悗緙鐨勫紑澶翠綅緗『嬈℃斁鍏A涓? 鍚嶆鏁扮粍 鍚嶆鏁扮粍Rank=SA-1錛屼篃灝辨槸璇磋嫢SA[i]=j錛屽垯Rank[j]=i錛屼笉闅劇湅鍑篟ank[i]淇濆瓨鐨勬槸Suffix(i)鍦ㄦ墍鏈夊悗緙涓粠灝忓埌澶ф帓鍒楃殑鈥滃悕嬈♀濄? 鏋勯犳柟娉? 濡備綍鏋勯犲悗緙鏁扮粍鍛紵鏈鐩存帴鏈綆鍗曠殑鏂規(guī)硶褰撶劧鏄妸S鐨勫悗緙閮界湅浣滀竴浜涙櫘閫氱殑瀛楃涓詫紝鎸夌収涓鑸瓧絎︿覆鎺掑簭鐨勬柟娉曞瀹冧滑浠庡皬鍒板ぇ榪涜鎺掑簭銆? 涓嶉毦鐪嬪嚭錛岃繖縐嶅仛娉曟槸寰堢鎷欑殑錛屽洜涓哄畠娌℃湁鍒╃敤鍒板悇涓悗緙涔嬮棿鐨勬湁鏈鴻仈緋伙紝鎵浠ュ畠鐨勬晥鐜囦笉鍙兘寰堥珮銆傚嵆浣塊噰鐢ㄥ瓧絎︿覆鎺掑簭涓瘮杈冮珮鏁堢殑Multi-key Quick Sort錛屾渶鍧忔儏鍐電殑鏃墮棿澶嶆潅搴︿粛鐒舵槸O(n2)鐨勶紝涓嶈兘婊¤凍鎴戜滑鐨勯渶瑕併? 涓嬮潰浠嬬粛鍊嶅綆楁硶(Doubling Algorithm)錛屽畠姝f槸鍏呭垎鍒╃敤浜嗗悇涓悗緙涔嬮棿鐨勮仈緋伙紝灝嗘瀯閫犲悗緙鏁扮粍鐨勬渶鍧忔椂闂村鏉傚害鎴愬姛闄嶈嚦O(nlogn)銆? 瀵逛竴涓瓧絎︿覆u錛屾垜浠畾涔塽鐨刱-鍓嶇紑 瀹氫箟k-鍓嶇紑姣旇緝鍏崇郴<k銆?k鍜屸墹k錛? 璁句袱涓瓧絎︿覆u鍜寁錛? u<kv 褰撲笖浠呭綋 uk<vk u=kv 褰撲笖浠呭綋 uk=vk u鈮v 褰撲笖浠呭綋 uk鈮k 鐩磋鍦扮湅榪欎簺鍔犱簡涓涓笅鏍噆鐨勬瘮杈冪鍙風殑鎰忎箟灝辨槸瀵逛袱涓瓧絎︿覆鐨勫墠k涓瓧絎﹁繘琛屽瓧鍏稿簭姣旇緝錛岀壒鍒殑涓鐐瑰氨鏄湪浣滃ぇ浜庡拰灝忎簬鐨勬瘮杈冩椂濡傛灉鏌愪釜瀛楃涓茬殑闀垮害涓嶅埌k涔熸病鏈夊叧緋伙紝鍙鑳藉鍦╧涓瓧絎︽瘮杈冪粨鏉熶箣鍓嶅緱鍒扮涓涓瓧絎︿覆澶т簬鎴栬呭皬浜庣浜屼釜瀛楃涓插氨鍙互浜嗐? 鏍規(guī)嵁鍓嶇紑姣旇緝絎︾殑鎬ц川鎴戜滑鍙互寰楀埌浠ヤ笅鐨勯潪甯擱噸瑕佺殑鎬ц川錛? 鎬ц川1.1 瀵筴鈮錛孲uffix(i)<kSuffix(j) 絳変環(huán)浜?Suffix(i)<Suffix(j)銆? 鎬ц川1.2 Suffix(i)=2kSuffix(j)絳変環(huán)浜? Suffix(i)=kSuffix(j) 涓?Suffix(i+k)=kSuffix(j+k)銆? 鎬ц川1.3 Suffix(i)<2kSuffix(j) 絳変環(huán)浜? Suffix(i)<kS(j) 鎴?(Suffix(i)=kSuffix(j) 涓?Suffix(i+k)<kSuffix(j+k))銆? 榪欓噷鏈変竴涓棶棰橈紝褰搃+k>n鎴栬卝+k>n鐨勬椂鍊橲uffix(i+k)鎴朣uffix(j+k)鏄棤鏄庣‘瀹氫箟鐨勮〃杈懼紡錛屼絾瀹為檯涓婁笉闇瑕佽冭檻榪欎釜闂錛屽洜涓烘鏃禨uffix(i)鎴栬匰uffix(j)鐨勯暱搴︿笉瓚呰繃k錛屼篃灝辨槸璇村畠浠殑k-鍓嶇紑浠?$'緇撳熬錛屼簬鏄痥-鍓嶇紑姣旇緝鐨勭粨鏋滀笉鍙兘鐩哥瓑錛屼篃灝辨槸璇村墠k涓瓧絎﹀凡緇忚兘澶熸瘮鍑哄ぇ灝忥紝鍚庨潰鐨勮〃杈懼紡鑷劧鍙互蹇界暐錛岃繖涔熷氨鐪嬪嚭鎴戜滑瑙勫畾S浠?$'緇撳熬鐨勭壒孌婄敤澶勪簡銆? 瀹氫箟k-鍚庣紑鏁扮粍 SAk淇濆瓨1..n鐨勬煇涓帓鍒桽Ak[1],SAk[2],鈥Ak[n]浣垮緱Suffix(SAk[i]) 鈮Suffix(SAk[i+1]),1鈮<n銆備篃灝辨槸璇村鎵鏈夌殑鍚庣紑鍦╧-鍓嶇紑姣旇緝鍏崇郴涓嬩粠灝忓埌澶ф帓搴忥紝騫朵笖鎶婃帓搴忓悗鐨勫悗緙鐨勫紑澶翠綅緗『嬈℃斁鍏ユ暟緇凷Ak涓? 瀹氫箟k-鍚嶆鏁扮粍Rankk錛孯ankk[i]浠h〃Suffix(i)鍦╧-鍓嶇紑鍏崇郴涓嬩粠灝忓埌澶х殑鈥滃悕嬈♀濓紝涔熷氨鏄?鍔犱笂婊¤凍Suffix(j)<kSuffix(i)鐨刯鐨勪釜鏁般傞氳繃SAk寰堝鏄撳湪O(n)鐨勬椂闂村唴姹傚嚭Rankk銆? 鍋囪鎴戜滑宸茬粡姹傚嚭浜哠Ak鍜孯ankk錛岄偅涔堟垜浠彲浠ュ緢鏂逛究鍦版眰鍑篠A2k鍜孯ank2k錛屽洜涓烘牴鎹ц川1.2鍜?.3錛?k-鍓嶇紑姣旇緝鍏崇郴鍙互鐢卞父鏁頒釜k -鍓嶇紑姣旇緝鍏崇郴緇勫悎璧鋒潵絳変環(huán)鍦拌〃杈撅紝鑰孯ankk鏁扮粍瀹為檯涓婄粰鍑轟簡鍦ㄥ父鏁版椂闂村唴榪涜<k鍜?k姣旇緝鐨勬柟娉曪紝鍗籌細 Suffix(i)<kSuffix(j) 褰撲笖浠呭綋 Rankk[i]<Rankk[j] Suffix(i)=kSuffix(j) 褰撲笖浠呭綋 Rankk[i]=Rankk[j] 鍥犳錛屾瘮杈僑uffix(i)鍜孲uffix(j)鍦╧-鍓嶇紑姣旇緝鍏崇郴涓嬬殑澶у皬鍙互鍦ㄥ父鏁版椂闂村唴瀹屾垚錛屼簬鏄鎵鏈夌殑鍚庣紑鍦ㄢ墹k鍏崇郴涓嬭繘琛屾帓搴忎篃灝卞拰涓鑸殑鎺掑簭娌℃湁浠涔堝尯鍒簡錛屽畠瀹為檯涓婂氨鐩稿綋浜庢瘡涓猄uffix(i)鏈変竴涓富鍏抽敭瀛桼ankk[i]鍜屼竴涓鍏抽敭瀛桼ankk[i+k]銆傚鏋滈噰鐢ㄥ揩閫熸帓搴忎箣綾籓 (nlogn)鐨勬帓搴忥紝閭d箞浠嶴Ak鍜孯ankk鏋勯犲嚭SA2k鐨勫鏉傚害灝辨槸O(nlogn)銆傛洿鑱槑鐨勬柟娉曟槸閲囩敤鍩烘暟鎺掑簭錛屽鏉傚害涓篛(n)銆? 姹傚嚭SA2k涔嬪悗灝卞彲浠ュ湪O(n)鐨勬椂闂村唴鏍規(guī)嵁SA2k鏋勯犲嚭Rank2k銆傚洜姝わ紝浠嶴Ak鍜孯ankk鎺ㄥ嚭SA2k鍜孯ank2k鍙互鍦∣(n)鏃墮棿鍐呭畬鎴愩? 涓嬮潰鍙湁涓涓棶棰橀渶瑕佽В鍐籌細濡備綍鏋勯犲嚭SA1鍜孯ank1銆傝繖涓棶棰橀潪甯哥畝鍗曪細鍥犱負<1錛?1鍜屸墹1榪欎簺榪愮畻絎﹀疄闄呬笂灝辨槸瀵瑰瓧絎︿覆鐨勭涓涓瓧絎﹁繘琛屾瘮杈冿紝鎵浠ュ彧瑕佹妸姣忎釜鍚庣紑鎸夌収瀹冪殑絎竴涓瓧絎﹁繘琛屾帓搴忓氨鍙互姹傚嚭SA1錛屼笉濡ㄥ氨閲囩敤蹇熸帓搴忥紝澶嶆潅搴︿負O(nlogn)銆? 浜庢槸錛屽彲浠ュ湪O(nlogn)鐨勬椂闂村唴姹傚嚭SA1鍜孯ank1銆? 姹傚嚭浜哠A1鍜孯ank1錛屾垜浠彲浠ュ湪O(n)鐨勬椂闂村唴姹傚嚭SA2鍜孯ank2錛屽悓鏍鳳紝鎴戜滑鍙互鍐嶇敤O(n)鐨勬椂闂存眰鍑篠A4鍜孯ank4錛岃繖鏍鳳紝鎴戜滑渚濇姹傚嚭錛? SA2鍜孯ank2錛孲A4鍜孯ank4錛孲A8鍜孯ank8錛屸︹︾洿鍒癝Am鍜孯ankm錛屽叾涓璵=2k涓攎鈮銆傝屾牴鎹ц川1.1錛孲Am鍜孲A鏄瓑浠風殑銆傝繖鏍蜂竴鍏遍渶瑕佽繘琛宭ogn嬈(n)鐨勮繃紼嬶紝鍥犳 鍙互鍦∣(nlogn)鐨勬椂闂村唴璁$畻鍑哄悗緙鏁扮粍SA鍜屽悕嬈℃暟緇凴ank銆? 鏈闀垮叕鍏卞墠緙 鐜板湪涓涓瓧絎︿覆S鐨勫悗緙鏁扮粍SA鍙互鍦∣(nlogn)鐨勬椂闂村唴璁$畻鍑烘潵銆傚埄鐢⊿A鎴戜滑宸茬粡鍙互鍋氬緢澶氫簨鎯咃紝姣斿鍦∣(mlogn)鐨勬椂闂村唴榪涜妯″紡鍖歸厤錛屽叾涓璵,n鍒嗗埆涓烘ā寮忎覆鍜屽緟鍖歸厤涓茬殑闀垮害銆備絾鏄鎯蟲洿鍏呭垎鍦板彂鎸ュ悗緙鏁扮粍鐨勫▉鍔涳紝鎴戜滑榪橀渶瑕佽綆椾竴涓緟鍔╃殑宸ュ叿鈥斺旀渶闀垮叕鍏卞墠緙錛圠ongest Common Prefix錛夈? 瀵逛袱涓瓧絎︿覆u,v瀹氫箟鍑芥暟l(fā)cp(u,v)=max{i|u=iv}錛屼篃灝辨槸浠庡ご寮濮嬮『嬈℃瘮杈僽鍜寁鐨勫搴斿瓧絎︼紝瀵瑰簲瀛楃鎸佺畫鐩哥瓑鐨勬渶澶т綅緗紝縐頒負榪欎袱涓瓧絎︿覆鐨勬渶闀垮叕鍏卞墠緙銆? 瀵規(guī)鏁存暟i,j瀹氫箟LCP(i,j)=lcp(Suffix(SA[i]),Suffix(SA[j])錛屽叾涓璱,j鍧囦負1鑷硁鐨勬暣鏁般侺CP(i,j)涔熷氨鏄悗緙鏁扮粍涓i涓拰絎琷涓悗緙鐨勬渶闀垮叕鍏卞墠緙鐨勯暱搴︺? 鍏充簬LCP鏈変袱涓樉鑰屾槗瑙佺殑鎬ц川錛? 鎬ц川2.1 LCP(i,j)=LCP(j,i) 鎬ц川2.2 LCP(i,i)=len(Suffix(SA[i]))=n-SA[i]+1 榪欎袱涓ц川鐨勭敤澶勫湪浜庯紝鎴戜滑璁$畻LCP(i,j)鏃跺彧闇瑕佽冭檻i<j鐨勬儏鍐碉紝鍥犱負i>j鏃跺彲浜ゆ崲i,j錛宨=j鏃跺彲浠ョ洿鎺ヨ緭鍑虹粨鏋渘-SA[i]+1銆? 鐩存帴鏍規(guī)嵁瀹氫箟錛岀敤欏烘姣旇緝瀵瑰簲瀛楃鐨勬柟娉曟潵璁$畻LCP(i,j)鏄劇劧鏄緢浣庢晥鐨勶紝鏃墮棿澶嶆潅搴︿負O(n)錛屾墍浠ユ垜浠繀欏昏繘琛岄傚綋鐨勯澶勭悊浠ラ檷浣庢瘡嬈¤綆桳CP鐨勫鏉傚害銆? 緇忚繃浠旂粏鍒嗘瀽錛屾垜浠彂鐜癓CP鍑芥暟鏈変竴涓潪甯稿ソ鐨勬ц川錛? 璁緄<j錛屽垯LCP(i,j)=min{LCP(k-1,k)|i+1鈮鈮} 錛圠CP Theorem錛? 瑕佽瘉鏄嶭CP Theorem錛岄鍏堣瘉鏄嶭CP Lemma: 瀵逛換鎰?鈮<j<k鈮錛孡CP(i,k)=min{LCP(i,j),LCP(j,k)} 璇佹槑錛氳p=min{LCP(i,j),LCP(j,k)}錛屽垯鏈塋CP(i,j)鈮,LCP(j,k)鈮銆? 璁維uffix(SA[i])=u,Suffix(SA[j])=v,Suffix(SA[k])=w銆? 鐢眜=LCP(i,j)v寰梪=pv錛涘悓鐞唙=pw銆? 浜庢槸Suffix(SA[i])=pSuffix(SA[k])錛屽嵆LCP(i,k)鈮銆?(1) 鍙堣LCP(i,k)=q>p錛屽垯 u[1]=w[1],u[2]=w[2],...u[q]=w[q]銆? 鑰宮in{LCP(i,j),LCP(j,k)}=p璇存槑u[p+1]鈮爒[p+1]鎴杤[p+1]鈮爓[q+1]錛? 璁緐[p+1]=x,v[p+1]=y,w[p+1]=z錛屾樉鐒舵湁x鈮鈮錛屽張鐢眕<q寰梡+1鈮錛屽簲璇ユ湁x=z錛屼篃灝辨槸x=y=z錛岃繖涓巙[p+1]鈮爒[p+1]鎴杤[p+1]鈮爓[q+1]鐭涚浘銆? 浜庢槸錛宷>p涓嶆垚绔嬶紝鍗矻CP(i,k)鈮銆?(2) 緇煎悎(1),(2)鐭?LCP(i,k)=p=min{LCP(i,j),LCP(j,k)}錛孡CP Lemma寰楄瘉銆? 浜庢槸LCP Theorem鍙互璇佹槑濡備笅錛? 褰搄-i=1鍜宩-i=2鏃訛紝鏄劇劧鎴愮珛銆? 璁緅-i=m鏃禠CP Theorem鎴愮珛錛屽綋j-i=m+1鏃訛紝 鐢盠CP Lemma鐭CP(i,j)=min{LCP(i,i+1),LCP(i+1,j)}錛? 鍥爅-(i+1)鈮錛孡CP(i+1,j)=min{LCP(k-1,k)|i+2鈮鈮}錛屾晠褰搄-i=m+1鏃訛紝浠嶆湁 LCP(i,j)=min{LCP(i,i+1),min{LCP(k-1,k)|i+2鈮鈮}}=min{LCP(k-1,k}|i+1鈮鈮) 鏍規(guī)嵁鏁板褰掔撼娉曪紝LCP Theorem鎴愮珛銆? 鏍規(guī)嵁LCP Theorem寰楀嚭蹇呯劧鐨勪竴涓帹璁猴細 LCP Corollary 瀵筰鈮<k錛孡CP(j,k)鈮CP(i,k)銆? 瀹氫箟涓緇存暟緇刪eight錛屼護height[i]=LCP(i-1,i)錛?<i鈮錛屽茍璁緃eight[1]=0銆? 鐢盠CP Theorem錛孡CP(i,j)=min{height[k]|i+1鈮鈮}錛屼篃灝辨槸璇達紝璁$畻LCP(i,j)絳夊悓浜庤闂竴緇存暟緇刪eight涓笅鏍囧湪i+1鍒癹鑼冨洿鍐呯殑鎵鏈夊厓绱犵殑鏈灝忓箋傚鏋渉eight鏁扮粍鏄浐瀹氱殑錛岃繖灝辨槸闈炲父緇忓吀鐨凴MQ錛圧ange Minimum Query錛夐棶棰樸? RMQ闂鍙互鐢ㄧ嚎孌墊爲鎴栭潤鎬佹帓搴忔爲鍦∣(nlogn)鏃墮棿鍐呰繘琛岄澶勭悊錛屼箣鍚庢瘡嬈¤闂姳璐規(guī)椂闂碠(logn)錛屾洿濂界殑鏂規(guī)硶鏄疪MQ鏍囧噯綆楁硶錛屽彲浠ュ湪O(n)鏃墮棿鍐呰繘琛岄澶勭悊錛屾瘡嬈¤闂彲浠ュ湪甯告暟鏃墮棿鍐呭畬鎴愩? 瀵逛簬涓涓浐瀹氱殑瀛楃涓睸錛屽叾height鏁扮粍鏄劇劧鏄浐瀹氱殑錛屽彧瑕佹垜浠兘楂樻晥鍦版眰鍑篽eight鏁扮粍錛岄偅涔堣繍鐢≧MQ鏂規(guī)硶榪涜棰勫鐞嗕箣鍚庯紝姣忔璁$畻LCP(i,j)鐨勬椂闂村鏉傚害灝辨槸甯告暟綰т簡銆備簬鏄彧鏈変竴涓棶棰樷斺斿浣曞敖閲忛珮鏁堝湴綆楀嚭height鏁扮粍銆? 鏍規(guī)嵁璁$畻鍚庣紑鏁扮粍鐨勭粡楠岋紝鎴戜滑涓嶅簲璇ユ妸n涓悗緙鐪嬩綔浜掍笉鐩稿叧鐨勬櫘閫氬瓧絎︿覆錛岃屽簲璇ュ敖閲忓埄鐢ㄥ畠浠箣闂寸殑鑱旂郴錛屼笅闈㈣瘉鏄庝竴涓潪甯告湁鐢ㄧ殑鎬ц川錛? 涓轟簡鎻忚堪鏂逛究錛岃h[i]=height[Rank[i]]錛屽嵆height[i]=h[SA[i]]銆俬鏁扮粍婊¤凍涓涓ц川錛? 鎬ц川3 瀵逛簬i>1涓擱ank[i]>1錛屼竴瀹氭湁h[i]鈮[i-1]-1銆? 涓轟簡璇佹槑鎬ц川3錛屾垜浠湁蹇呰鏄庣‘涓や釜浜嬪疄錛? 璁緄<n,j<n錛孲uffix(i)鍜孲uffix(j)婊¤凍lcp(Suffix(i),Suffix(j)>1錛屽垯鎴愮珛浠ヤ笅涓ょ偣錛? Fact 1 Suffix(i)<Suffix(j) 絳変環(huán)浜?Suffix(i+1)<Suffix(j+1)銆? Fact 2 涓瀹氭湁lcp(Suffix(i+1),Suffix(j+1))=lcp(Suffix(i),Suffix(j))-1銆? 鐪嬭搗鏉ュ緢紲炲錛屼絾鍏跺疄寰堣嚜鐒訛細lcp(Suffix(i),Suffix(j))>1璇存槑Suffix(i)鍜孲uffix(j)鐨勭涓涓瓧絎︽槸鐩稿悓鐨勶紝璁懼畠涓何憋紝鍒橲uffix(i)鐩稿綋浜幬卞悗榪炴帴Suffix(i+1)錛孲uffix(j)鐩稿綋浜幬卞悗榪炴帴Suffix(j+1)銆傛瘮杈僑uffix (i)鍜孲uffix(j)鏃訛紝絎竴涓瓧絎ξ辨槸涓瀹氱浉絳夌殑錛屼簬鏄悗闈㈠氨絳変環(huán)浜庢瘮杈僑uffix(i)鍜孲uffix(j)錛屽洜姝act 1鎴愮珛銆侳act 2鍙被浼艱瘉鏄庛? 浜庢槸鍙互璇佹槑鎬ц川3錛? 褰揾[i-1]鈮?鏃訛紝緇撹鏄劇劧鎴愮珛錛屽洜h[i]鈮?鈮[i-1]-1銆? 褰揾[i-1]>1鏃訛紝涔熷嵆height[Rank[i-1]]>1錛屽彲瑙丷ank[i-1]>1錛屽洜height[1]=0銆? 浠=i-1,k=SA[Rank[j]-1]銆傛樉鐒舵湁Suffix(k)<Suffix(j)銆? 鏍規(guī)嵁h[i-1]=lcp(Suffix(k),Suffix(j))>1鍜孲uffix(k)<Suffix(j)錛? 鐢盕act 2鐭cp(Suffix(k+1),Suffix(i))=h[i-1]-1銆? 鐢盕act 1鐭ank[k+1]<Rank[i]錛屼篃灝辨槸Rank[k+1]鈮ank[i]-1銆? 浜庢槸鏍規(guī)嵁LCP Corollary錛屾湁 LCP(Rank[i]-1,Rank[i])鈮CP(Rank[k+1],Rank[i]) =lcp(Suffix(k+1),Suffix(i)) =h[i-1]-1 鐢變簬h[i]=height[Rank[i]]=LCP(Rank[i]-1,Rank[i])錛屾渶緇堝緱鍒?h[i]鈮[i-1]-1銆? 鏍規(guī)嵁鎬ц川3錛屽彲浠ヤ護i浠?寰幆鍒皀鎸夌収濡備笅鏂規(guī)硶渚濇綆楀嚭h[i]錛? 鑻ank[i]=1錛屽垯h[i]=0銆傚瓧絎︽瘮杈冩鏁頒負0銆? 鑻=1鎴栬卙[i-1]鈮?錛屽垯鐩存帴灝哠uffix(i)鍜孲uffix(Rank[i]-1)浠庣涓涓瓧絎﹀紑濮嬩緷嬈℃瘮杈冪洿鍒版湁瀛楃涓嶇浉鍚岋紝鐢辨璁$畻鍑篽[i]銆傚瓧絎︽瘮杈冩鏁頒負h[i]+1錛屼笉瓚呰繃h[i]-h[i-1]+2銆? 鍚﹀垯錛岃鏄巌>1錛孯ank[i]>1錛宧[i-1]>1錛屾牴鎹ц川3錛孲uffix(i)鍜孲uffix(Rank[i]-1)鑷沖皯鏈夊墠h[i-1]-1涓瓧絎︽槸鐩稿悓鐨勶紝浜庢槸瀛楃姣旇緝鍙互浠巋[i-1]寮濮嬶紝鐩村埌鏌愪釜瀛楃涓嶇浉鍚岋紝鐢辨璁$畻鍑篽[i]銆傚瓧絎︽瘮杈冩鏁頒負h[i]-h[i- 1]+2銆? 璁維A[1]=p錛岄偅涔堜笉闅劇湅鍑烘葷殑瀛楃姣旇緝嬈℃暟涓嶈秴榪? 涔熷氨鏄錛屾暣涓畻娉曠殑澶嶆潅搴︿負O(n)銆? 姹傚嚭浜唄鏁扮粍錛屾牴鎹叧緋誨紡height[i]=h[SA[i]]鍙互鍦∣(n)鏃墮棿鍐呮眰鍑篽eight鏁扮粍錛屼簬鏄? 鍙互鍦∣(n)鏃墮棿鍐呮眰鍑篽eight鏁扮粍銆? 緇撳悎RMQ鏂規(guī)硶錛屽湪O(n)鏃墮棿鍜岀┖闂磋繘琛岄澶勭悊涔嬪悗灝辮兘鍋氬埌鍦ㄥ父鏁版椂闂村唴璁$畻鍑哄浠繪剰(i,j)璁$畻鍑篖CP(i,j)銆? 鍥犱負lcp(Suffix(i),Suffix(j))=LCP(Rank[i],Rank[j])錛屾墍浠ユ垜浠篃灝卞彲浠ュ湪甯告暟鏃墮棿鍐呮眰鍑篠鐨勪換浣曚袱涓悗緙涔嬮棿鐨勬渶闀垮叕鍏卞墠緙銆傝繖姝f槸鍚庣紑鏁扮粍鑳藉己鏈夊姏鍦板鐞嗗緢澶氬瓧絎︿覆闂鐨勯噸瑕佸師鍥犱箣涓銆?br />鍚庣紑鏁扮粍鐨勫簲鐢?br />涓嬮潰緇撳悎涓や釜渚嬪瓙璋堣皥濡備綍榪愮敤鍚庣紑鏁扮粍.
渚嬩竴 澶氭ā寮忎覆鐨勬ā寮忓尮閰嶉棶棰?br />緇欏畾涓涓浐瀹氬緟鍖歸厤涓睸,闀垮害涓簄,鐒跺悗姣忔杈撳叆涓涓ā寮忎覆P,闀垮害涓簃,瑕佹眰榪斿洖P鍦⊿涓殑涓涓尮閰嶆垨鑰呰繑鍥炲尮閰嶅け璐?鎵璋撳尮閰嶆寚鏌愪釜浣嶇疆i婊¤凍1鈮鈮-m+1浣垮緱S[i..(i+m-1)]=P,涔熷嵆Suffix(i)=mP. 鎴戜滑鐭ラ亾,濡傛灉鍙湁涓涓ā寮忎覆,鏈濂界殑綆楁硶灝辨槸KMP綆楁硶,鏃墮棿澶嶆潅搴︿負O(n+m),浣嗘槸濡傛灉鏈夊涓ā寮忎覆,鎴戜滑灝辮鑰冭檻鍋氶傚綋鐨勯澶勭悊浣垮緱瀵規(guī)瘡涓ā寮忎覆榪涜鍖歸厤鎵鑺辯殑鏃墮棿灝忎竴浜?鏈綆鍗曠殑棰勫鐞嗚帿榪囦簬寤虹珛S鐨勫悗緙鏁扮粍(鍏堝湪S鐨勫悗闈㈡坊鍔?$'),鐒跺悗姣忔瀵繪壘鍖歸厤杞寲涓虹敤浜屽垎鏌ユ壘娉曞湪SA涓壘鍒板拰P鐨勫叕鍏卞墠緙鏈闀跨殑涓涓悗緙,鍒ゆ柇榪欎釜鏈闀跨殑鍏叡鍓嶇紑鏄惁絳変簬m.榪欐牱,姣忔姣旇緝P鍜屼竴涓悗緙鐨勫鏉傚害涓篛(m),鍥犱負鏈鍧忔儏鍐典笅鍙兘姣旇緝浜唌涓瓧絎?浜屽垎鏌ユ壘闇瑕佽皟鐢ㄦ瘮杈冪殑嬈℃暟涓篛(logn),鍥犳鎬誨鏉傚害涓篛(mlogn),浜庢槸姣忔鍖歸厤鐨勫鏉傚害浠嶰(n+m)鍙樹負O(mlogn),鍙互璇存敼榪涗簡涓嶅皯.鍙槸榪欐牱浠嶇劧涓嶈兘浠ゆ垜浠弧瓚?鍓嶉潰鎻愬埌LCP鍙互澧炲姞鍚庣紑鏁扮粍鐨勫▉鍔? 鎴戜滑鏉ヨ瘯璇曠敤鍦ㄨ繖涓棶棰樹笂. 鎴戜滑鍒嗘瀽鍘熷鐨勪簩鍒嗘煡鎵劇畻娉?澶т綋鏈変互涓嬪嚑姝? Step 1 浠eft=1,right=n,max_match=0. Step 2 浠id=(left+right)/2(榪欓噷"/"琛ㄧず鍙栨暣闄ゆ硶). Step 3 欏烘姣旇緝Suffix(SA[mid])鍜孭鐨勫搴斿瓧絎?鎵懼埌涓よ呯殑鏈闀垮叕鍏?br />鍓嶇紑r,騫跺垽鏂嚭瀹冧滑鐨勫ぇ灝忓叧緋?鑻>max_match鍒欎護max_match=r,ans=mid. Step 4 鑻uffix(SA[mid])P鍒欎護 right=mid-1,鑻uffix(SA[mid])=P鍒欒漿鑷砈tep 6. Step 5 鑻eft Step 6 鑻ax_match=m鍒欒緭鍑篴ns,鍚﹀垯杈撳嚭"鏃犲尮閰?. 娉ㄦ剰鍔涘緢蹇泦涓湪Step 3,濡傛灉鑳藉閬垮厤姣忔閮戒粠澶村紑濮嬫瘮杈僑uffix(SA[mid])鍜孭鐨勫搴斿瓧絎?涔熻澶嶆潅搴﹀氨鍙互榪涗竴姝ラ檷浣?綾諱技浜庡墠闈㈡眰height鏁扮粍,鎴戜滑鑰冭檻鍒╃敤浠ュ墠姹傚緱鐨勬渶闀垮叕鍏卞墠緙浣滀負姣旇緝鐨?鍩虹",閬垮厤鍐椾綑鐨勫瓧絎︽瘮杈? 鍦ㄦ瘮杈僑uffix(SA[mid])鍜孭涔嬪墠,鎴戜滑鍏堢敤甯告暟鏃墮棿璁$畻LCP(mid,ans),鐒跺悗姣旇緝LCP(mid,ans)鍜宮ax_match:鎯呭喌涓:LCP(mid,ans)k+1,T[i-r'..i-1]鍜孴[i+1..i+r']涔熶笉鍙兘鍏充簬T[i]瀵圭О浜?鎵浠鏈澶у彧鑳藉埌k.鎴戜滑鎶妑閫掑鐨勮繃紼嬬О涓哄悜涓よ竟鎵╁睍,鎵╁睍涓嬈″氨鍙互鎶婁互T[i]涓轟腑蹇冪殑濂囧洖鏂囧瓙涓茬殑闀垮害鍔?.鏈鍚巖鎵╁睍鍒扮殑鏈澶у煎喅瀹氫簡浠[i]涓轟腑蹇冪殑濂囧洖鏂囧瓙涓蹭腑鐨勬渶闀胯呯殑闀垮害(涓?r+1).璁緇en(T)=m,濡傛灉鐢ㄤ緷嬈℃瘮杈冨搴斿瓧絎︾殑鏂規(guī)硶鏉ユ眰鍚戜袱杈規(guī)墿灞曠殑鏈澶у?鍒欐渶澶氬彲鑳芥瘮杈僲-1涓瓧絎?鐢變簬瑕佹灇涓炬瘡涓綅緗綔涓轟腑蹇冨悜涓よ竟鎵╁睍,鎵浠ユ渶鍧忔儏鍐典笅鎬葷殑澶嶆潅搴﹀彲浠ヨ揪鍒癘(m2),涓嶅緢鐞嗘兂. 涓嬮潰浼樺寲綆楁硶鐨勬牳蹇冮儴鍒?br />鈥斺斾互涓涓綅緗負涓績姹傚悜涓よ竟鎵╁睍鐨勬渶澶у? 鍦═涓茬殑鏈熬娣誨姞涓涓壒孌婂瓧絎?#',瑙勫畾瀹冧笉絳変簬T鐨勪換浣曚竴涓瓧絎?鐒跺悗鎶奣涓查鍊?鎺ュ湪'#'鍚?鍦═'涓插悗鍐嶆坊鍔犵壒孌婂瓧絎?$',瑙勫畾瀹冨皬浜庡墠闈㈢殑浠諱綍涓涓瓧絎?鎷兼帴鍚庡艦鎴愮殑涓茬О涓篠涓?涓嶉毦鐪嬪嚭T涓蹭腑浠諱綍涓涓瓧絎﹂兘鍙湪T'涓縐板湴鎵懼埌涓涓浉鍚岀殑瀛楃.濡傛灉閮界敤S閲岀殑瀛楃鏉ヨ〃紺?S[1..m]鏄疶涓?S[m+2..2m+1]鏄疶'涓?鍒欐瘡涓猄[i](1鈮鈮)鍏充簬'#'瀵圭О鐨勫瓧絎︽槸S[2m-i+2].榪欐牱鍘熷厛T涓查噷闈㈢殑涓涓瓙涓睸[i..j](1鈮鈮鈮)鍏充簬'#'涔熷彲浠ュ縐板湴鎵懼埌涓涓弽灝勭浉絳夌殑瀛愪覆S[2m-j+2..2m-i+2]. 鐜板湪鎴戜滑瀹氫笅T涓茬殑鏌愪釜浣嶇疆S[i]涓轟腑蹇?鍋囪鍚戜袱杈規(guī)墿灞曞埌浜唅-r鍜宨+r,閭d箞S[i-r..i-1]鍜孲[i+1..i+r]鏄弽灝勭浉絳夌殑,S[i]鍙互鍦═'涓壘鍒板縐扮殑瀛楃S[2m-i+2],璁緄'=2m-i+2,鍒橲[i-r..i-1]涔熷彲浠ュ湪T'涓壘鍒板縐扮殑瀛愪覆S[i'+1..i'+r], banana#ananab$ TT' ii'=2m-i+2 閭d箞S[i+1..i+r]鍜孲[i'+1..i'+r]鍚屾椂涓嶴[i-r..i-1]鍙嶅皠鐩哥瓑,涔熷氨鏄,S[i+1..i+r]=S[i'+1..i'+r].鍙堝洜涓篠[i]=S[i'],鏁匰[i..i+r]=S[i'..i'+r].涔熷氨鏄,Suffix(i)=r+1Suffix(i').鐜板湪瑕佹眰r灝介噺澶?涔熷氨鏄眰max{r|Suffix(i)=r+1Suffix(i')},涓嶉毦鐪嬪嚭,榪欓噷r=LCP(i,i')-1.涓婇潰鐨勬帹鐞嗚繕瀛樺湪涓涓棶棰?鍗蟲眰鍑虹殑LCP(i,i')-1榪樺彧鑳界湅浣渞鐨勪竴涓笂鐣?榪樹笉鑳藉綋鎴恟鐨勬渶澶у?鍥犱負榪橀渶瑕佽瘉鏄庣粰鍑篠uffix(i)鍜孲uffix(i')鐨勬渶闀垮叕鍏卞墠緙,涓瀹氬彲浠ュ弽榪囨潵鍦═涓蹭腑鎵懼埌鐩稿簲鐨勪互i涓轟腑蹇冪殑鍥炴枃涓?榪欎釜璇佹槑涓庡墠闈㈢殑鎺ㄧ悊綾諱技,鍙槸闇瑕佹敞鎰忎竴鐐?榪欓噷鍒╃敤鍒頒簡'#'榪欎釜鐗規(guī)畩瀛楃閬垮厤浜嗘綔鍦ㄧ殑LCP(i,i')瓚呰繃瀹為檯鐨剅鏈澶у肩殑鍗遍櫓.榪欎釜璇佹槑鐣欑粰璇昏呰嚜琛屽畬鎴?鎬諱箣,鎴戜滑宸茬粡紜畾姹備互T[i]涓轟腑蹇冨悜涓よ竟鎵╁睍鐨勬渶澶у肩瓑浠蜂簬姹侺CP(i,i'),鏍規(guī)嵁鍓嶉潰鍚庣紑鏁扮粍鍜孡CP鐨勭浉鍏沖唴瀹硅繖涓姝ユ搷浣滃彲浠ュ湪甯告暟鏃墮棿鍐呭畬鎴?鍙鎴戜滑棰勫厛鑺辮垂O(nlogn)鐨勫鏉傚害璁$畻鍚庣紑鏁扮粍,height鏁扮粍鍜岃繘琛岄澶勭悊.鍏朵腑n=len(S)=2m+2. 鐜板湪姣忔姹備互涓涓綅緗甌[i]涓轟腑蹇冪殑鍥炴枃瀛愪覆涓殑鏈闀胯呯殑闀垮害鍙互鍦ㄥ父鏁版椂闂村唴瀹屾垚,鎴戜滑鏋氫婦i浠?鍒癿,渚濇姹傚嚭鎵鏈夌殑榪欎簺鏈闀胯?璁板綍鍏朵腑鏈澶х殑涓涓殑闀垮害,灝辨槸鎵瑕佹眰鐨勬渶闀垮鍥炴枃瀛愪覆鐨勯暱搴?鐢變簬瀵規(guī)瘡涓腑蹇冭姳璐規(guī)椂闂翠負甯告暟,鎵浠ユ葷殑澶嶆潅搴︿負O(m).鍥犳鏁翠釜綆楁硶鐨勫鏉傚害鏄疧(nlogn+m)=O(2mlog(2m)+m)=O(mlogm),鏄潪甯鎬紭縐鐨勭畻娉?姣斾箣鍓嶇殑騫蟲柟綰х畻娉曞ぇ涓烘敼榪? 鍚庣紑鏁扮粍涓庡悗緙鏍戠殑姣旇緝 閫氳繃涓婇潰鐨勪袱涓緥瀛愮浉淇¤鑰呭凡緇忓鍚庣紑鏁扮粍鐨勫己澶у姛鑳芥湁鎵浜嗚В,鍙︿竴縐嶆暟鎹粨鏋勨斺斿悗緙鏍?涔熷彲浠ョ敤鍦ㄨ繖浜涢棶棰樹腑,閭d箞鍚庣紑鏁扮粍鍜屽悗緙鏍戞湁浠涔堝尯鍒拰鑱旂郴鍛?鎴戜滑鏉ユ瘮杈冧竴涓? 棣栧厛,鍚庣紑鏁扮粍姣旇緝瀹規(guī)槗鐞嗚В,涔熸槗浜庣紪紼嬪疄鐜?鑰屼笖涓嶅儚鍚庣紑鏍戦偅鏍烽渶瑕佹秹鍙婂埌鎸囬拡鎿嶄綔,鎵浠ヨ皟璇曡搗鏉ユ瘮杈冩柟渚?絎簩,鍚庣紑鏁扮粍鍗犵敤鐨勭┖闂存瘮鍚庣紑鏍戣灝?鍒氭墠鍒嗘瀽涓垜浠茍娌℃湁鎻愬埌絀洪棿澶嶆潅搴︾殑闂,榪欓噷綆鍗曡涓涓?鍚庣紑鏁扮粍SA鍜屽悕璇嶆暟緇凴ank閮藉彧闇瑕乶涓暣鏁扮殑絀洪棿,鑰屽湪鐢盧ankk璁$畻鍑篠A2k鐨勮繃紼嬩腑闇瑕佺敤涓や釜涓緇存暟緇勬潵杈呭姪瀹屾垚,鍚勫崰n涓暣鏁扮殑絀洪棿,婊氬姩鍦拌繘琛屾搷浣?鏁翠釜綆楁硶鍙渶瑕佽繖鍥涗釜涓緇存暟緇勫拰甯告暟涓緟鍔╁彉閲?鍥犳鎬葷殑絀洪棿鍗犵敤涓?n涓暣鏁?鑰屽悗緙鏍戦氬父鏈?n涓互涓婅妭鐐?閫氬父姣忎釜鑺傜偣瑕佷袱涓暣鏁?鍗充嬌閲囩敤涓浜涙妧宸?鑷沖皯榪樻槸瑕佷繚瀛樹竴涓暣鏁?,姣忎釜鑺傜偣瑕佹湁涓や釜鎸囬拡(鍋囪閲囩敤鍎垮瓙-鍏勫紵琛ㄧず鏂規(guī)硶),鍥犳鎬誨叡鐨勭┖闂村崰鐢ㄨ嚦灝戞槸4n涓寚閽堝拰2n涓暣鏁?鑷沖皯鏄痭涓暣鏁?.濡傛灉閲囩敤鍏朵粬鏂規(guī)硶琛ㄧず鏍戠姸緇撴瀯,闇瑕佺殑絀洪棿鏇村ぇ.鍙互鐪嬪嚭鍚庣紑鏁扮粍鐨勭┖闂撮渶姹傛瘮鍚庣紑鏍戝皬. 鏈鍚庢瘮杈冨畠浠殑澶嶆潅搴? 棣栧厛鎸夌収瀛楃鎬繪暟|鈭憒鎶婂瓧絎﹂泦鈭戝垎涓轟笁縐嶇被鍨? 鑻鈭憒鏄竴涓父鏁?鍒欑О鈭戜負Constant Alphabet, 鑻鈭憒鐨勫ぇ灝忔槸鍏充簬S鐨勯暱搴鐨勫欏瑰紡鍑芥暟,鍒欑О鈭戜負Integer Alphabet, 鑻鈭憒娌℃湁澶у皬涓婄殑闄愬埗,鍒欑О鈭戜負General Alphabet. 鏄劇劧Constant Alphbet灞炰簬Integer Alphabet鐨勪竴縐?鑰孖nteger Alphabet鏄疓eneral Alphabet鐨勪竴縐?鏋勯犲悗緙鏁扮粍鐨勫鏉傚害涓庡瓧絎﹂泦鏃犲叧,鍥犱負瀹冩槸鐩存帴閽堝General Alphabet鐨勭畻娉?瀵逛簬鏅氭柟娉曟瀯閫犲悗緙鏍?濡傛灉鐢ㄥ効瀛?鍏勫紵鏂瑰紡琛ㄨ揪鏍戠姸緇撴瀯,鏃墮棿澶嶆潅搴﹁揪鍒癘(n*|鈭憒),鏄劇劧瀵逛簬Integer Alphabet 鍜?General Alphabet閮藉緢浣庢晥,瀵箌鈭憒杈冨ぇ鐨凜onstant Alphabet涔熶笉閫傜敤.瑙e喅鐨勬柟娉曟槸鐢ㄥ鉤琛′簩鍙夋爲鏉ヤ繚瀛樻寚鍚戝効瀛愮殑鎸囬拡,榪欐牱澶嶆潅搴﹀彉涓篛(n*log|鈭憒).鍙鍚庣紑鏍戝湪鏌愪簺鎯呭喌涓嬬浉瀵瑰悗緙鏁扮粍鏈夐熷害涓婄殑浼樺娍,浣嗘槸騫朵笉鏄庢樉.瀵逛簬|鈭憒寰堝皬鐨勫瓧絎︿覆,鍚庣紑鏍戠浉姣斿悗緙鏁扮粍鐨勯熷害浼樺娍榪樻槸姣旇緝鍙鐨?灝ゅ叾鏄浜庡緢甯歌鐨?-1涓? 鍚庣紑鏁扮粍瀹為檯涓婂彲浠ョ湅浣滃悗緙鏍戠殑鎵鏈夊彾緇撶偣鎸夌収浠庡乏鍒板彸鐨勬搴忔帓鍒楁斁鍏ユ暟緇勪腑褰㈡垚鐨?鎵浠ュ悗緙鏁扮粍鐨勭敤閫斾笉鍙兘瓚呭嚭鍚庣紑鏍戠殑鑼冨洿.鐢氳嚦鍙互璇?濡傛灉涓嶉厤鍚圠CP,鍚庣紑鏁扮粍鐨勫簲鐢ㄨ寖鍥存槸寰堢嫮紿勭殑.浣嗘槸LCP鍑芥暟閰嶅悎涓嬬殑鍚庣紑鏁扮粍灝遍潪甯稿己澶?鍙互瀹屾垚澶у鏁板悗緙鏍戞墍鑳藉畬鎴愮殑浠誨姟,鍥犱負LCP鍑芥暟瀹為檯涓婄粰鍑轟簡浠繪剰涓や釜鍙跺瓙緇撶偣鐨勬渶榪戝叕鍏辯鍏?榪欐柟闈㈢殑鍐呭澶у鍙互鑷鐮?br />絀?鍚庣紑鏍戝拰鍚庣紑鏁扮粍閮芥槸瀛楃涓插鐞嗕腑闈炲父浼樼鐨勬暟鎹粨鏋?涓嶈兘璇翠竴涓偗瀹氫紭浜庡彟涓涓?瀵逛簬涓嶅悓鍦哄悎,涓嶅悓鏉′歡鐨勯棶棰?鎴戜滑搴旇鐏墊椿搴旂敤,綺懼績閫夋嫨鍦伴夋嫨鍏朵腑杈冧負閫傚悎鐨勪竴涓?綆楁硶鍜屾暟鎹粨鏋勯兘鏄鐨?鑰岃繍鐢ㄥ畠浠殑浜?鎵嶆槸鐪熸鐨勪富瑙?瀵圭粡鍏哥殑綆楁硶鍜屾暟鎹粨鏋勭啛緇冩帉鎻″茍閫傚綋鍦拌繍鐢ㄤ互鍙戞尌瀹冧滑鏈澶х殑鍔涢噺,榪欐墠鏄俊鎭鐮旂┒鍜岀珵璧涗腑鏈澶х殑鏅烘収,涔熸槸淇℃伅瀛︾珵璧涚殑欖呭姏 鎵鍦? ]]> 鍒氬仛鐨凾C http://www.shnenglu.com/ACflying/archive/2009/05/28/85956.htmlKNIGHT KNIGHT Wed, 27 May 2009 16:25:00 GMT http://www.shnenglu.com/ACflying/archive/2009/05/28/85956.html http://www.shnenglu.com/ACflying/comments/85956.html http://www.shnenglu.com/ACflying/archive/2009/05/28/85956.html#Feedback 1 http://www.shnenglu.com/ACflying/comments/commentRss/85956.html http://www.shnenglu.com/ACflying/services/trackbacks/85956.html 寤舵椂15鍒嗛挓鏈潵鏈瓙灝辨病鏈夌數(shù)銆傘傘傘傘傜幇鍦ㄨ繕娌℃瘮瀹屽氨鍓?000鍒嗙殑鏈瓙鎼炰笉浣忎簡銆傘傚啓涓嬫棩蹇楀氨宸笉澶歰ver浜?br />鏈夌偣鍥般傘傘傘傘?000鍒嗛鐩兘娌″績鎯呯湅浜?250鐨勯鏅曚簡 嫻垂浜嗗緢澶氭椂闂淬傘傘傘傘?00鐨勫掓槸寰堝揩鎺ㄥ嚭鏉ヤ簡 鍙儨 灝戞兂浜嗕竴縐嶆儏鍐典粠鏂版彁浜や簡涓嬈°傘傘傘傘傛檿 鐫¤浜嗐傘傘傘俽ating涔熸病鎬ф儏鐪嬩簡 姝e紡鐨勭涓嬈C宸笉澶氳兘澶熺豢浜嗗惂銆傘傘傘傚簲璇ヨ兘澶熴傘傘?br />鐫¤浜?img src ="http://www.shnenglu.com/ACflying/aggbug/85956.html" width = "1" height = "1" /> ]]> 鐪佽禌鍛婁竴孌佃惤 http://www.shnenglu.com/ACflying/archive/2009/05/26/85807.htmlKNIGHT KNIGHT Tue, 26 May 2009 08:33:00 GMT http://www.shnenglu.com/ACflying/archive/2009/05/26/85807.html http://www.shnenglu.com/ACflying/comments/85807.html http://www.shnenglu.com/ACflying/archive/2009/05/26/85807.html#Feedback 0 http://www.shnenglu.com/ACflying/comments/commentRss/85807.html http://www.shnenglu.com/ACflying/services/trackbacks/85807.html 澶囨垬鍥涚渷璧涖傘傘備竴鍒囬兘娌℃湁鍙樸傘傘?br />灝卞xiaoz鎵璇達細AC鎵嶆槸鐜嬮亾銆?br />just do it銆俷o matter what happen銆侴o銆傦紒 ]]> 鍚庡ぉ鐪佽禌浜?/title> http://www.shnenglu.com/ACflying/archive/2009/05/22/85470.htmlKNIGHT KNIGHT Fri, 22 May 2009 14:00:00 GMT http://www.shnenglu.com/ACflying/archive/2009/05/22/85470.html http://www.shnenglu.com/ACflying/comments/85470.html http://www.shnenglu.com/ACflying/archive/2009/05/22/85470.html#Feedback 1 http://www.shnenglu.com/ACflying/comments/commentRss/85470.html http://www.shnenglu.com/ACflying/services/trackbacks/85470.html 鐢變簬鏄ㄥぉ鐫″緱鏅氫簡浜涗粖澶╂棭涓?鐐瑰氨璧鋒潵鎵撴壂瀵濆錛岃浠涔堥槻姝㈢尓嫻佹劅鍋氬瘽瀹ゆ鏌ワ紝涓崍鎯沖洖瀹胯垗鐫′竴瑙変篃娌$潯錛屽氨鍦ㄥ疄楠屽WS錛?br />鏅氫笂鐨勬椂鍊欎粠澶寸炕QQ鏃ュ織錛屾劅瑙夋湁鐐規(guī)偛浼ょ殑姘旀皼灝辯炕浜嗕竴綃囧垹涓綃囷紝緇撴灉194綃囧垹瀹屻傘傘備粠姝ゅ湪榪欎釜Blog鍐欎笢瑗跨渷璧涘仛瀹屼箣鍚庡敖蹇揪鍒?00錛屽皝鍙鳳紒涔嬪悗瀹岀編鐨勫仛TC銆?br />聽聽聽鍚庡ぉ鐪佽禌浜嗭紝鎴栬呰瑕佽宸ュぇ鐨勪紬紲炵墰铏愪簡錛屽湪榪欓噷Bless Every Hrbeu鈥榮 Acmers鍙栧緱濂芥垚緇╋紒 ]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
一区二区三区四区五区在线 |
女主播福利一区 |
久久三级视频 |
欧美色图五月天 |
久久久久网址 |
欧美a级一区二区 |
91久久亚洲 |
狠狠网亚洲精品 |
国产精品毛片在线 |
欧美另类综合 |
国产精品久久久久三级 |
美女国内精品自产拍在线播放 |
亚洲第一福利视频 |
国产一区二区三区久久久 |
久久国产乱子精品免费女 |
久久国产精品久久w女人spa |
亚洲国产欧美日韩精品 |
国产精品制服诱惑 |
久久久蜜桃一区二区人 |
久久久久久有精品国产 |
在线亚洲电影 |
国产精品五月天 |
午夜精品久久久久 |
欧美伊人久久久久久久久影院 |
欧美一区二区三区视频在线观看 |
亚洲精品国产无天堂网2021 |
亚洲精品视频在线观看网站
|
午夜精品美女久久久久av福利 |
亚洲精品黄色 |
老司机免费视频久久 |
日韩亚洲欧美一区 |
精品99视频 |
欧美在线视频日韩 |
国产情人节一区 |
欧美在线首页 |
久久国产视频网 |
欧美日本一道本在线视频 |
国产精品porn |
亚洲精品久久久久久久久久久 |
欧美一区二区视频在线 |
最新国产成人在线观看 |
亚洲欧美国产日韩中文字幕 |
欧美成人影音 |
曰韩精品一区二区 |
欧美自拍偷拍 |
亚洲视频一起 |
欧美日韩在线视频一区二区 |
亚洲精品男同 |
免费人成网站在线观看欧美高清 |
亚洲校园激情 |
欧美视频在线免费 |
一区二区三区四区蜜桃 |
亚洲第一狼人社区 |
老司机精品久久 |
精品成人免费 |
久久艳片www.17c.com |
香蕉成人啪国产精品视频综合网 |
亚洲免费中文字幕 |
亚洲日本欧美日韩高观看 |
国产精品捆绑调教 |
亚洲精品视频一区二区三区 |
欧美va天堂va视频va在线 |
性欧美办公室18xxxxhd |
欧美性片在线观看 |
欧美一区二区成人 |
欧美影院午夜播放 |
中文国产一区 |
aaa亚洲精品一二三区 |
免费成人av在线 |
**性色生活片久久毛片 |
久久综合狠狠综合久久激情 |
欧美在线视频免费播放 |
国内精品久久久久久 |
久久久99国产精品免费 |
欧美在线一区二区 |
在线精品福利 |
亚洲全部视频 |
国产精品九九 |
久久美女艺术照精彩视频福利播放 |
欧美综合二区 |
亚洲风情亚aⅴ在线发布 |
亚洲高清久久久 |
欧美日韩在线精品 |
久久都是精品 |
欧美成人黑人xx视频免费观看 |
99国产精品国产精品久久 |
99热精品在线 |
国产主播精品 |
亚洲精品免费网站 |
国产精品爽黄69 |
麻豆成人91精品二区三区 |
欧美成人一区二区在线
|
亚洲国产精彩中文乱码av在线播放 |
乱码第一页成人 |
亚洲一区二区在线免费观看 |
亚洲欧美偷拍卡通变态 |
亚洲国产精品福利 |
亚洲一区二区在线视频
|
欧美日韩成人一区 |
久久精品国产91精品亚洲 |
欧美成人精品一区二区三区 |
亚洲欧美日韩在线 |
久久久久久久综合色一本 |
一区二区高清 |
久久夜色精品亚洲噜噜国产mv |
亚洲在线观看视频 |
免费成人激情视频 |
久久久精品五月天 |
欧美亚洲成人精品 |
亚洲一区影院 |
欧美在线播放视频 |
亚洲欧美日韩在线 |
夜夜爽av福利精品导航 |
性久久久久久久久久久久 |
日韩视频免费在线观看 |
久久久久国产免费免费 |
亚洲欧美日本另类 |
欧美日韩国产一区 |
亚洲电影免费 |
亚洲国产精品免费 |
欧美一区2区三区4区公司二百
|
欧美午夜精品一区二区三区 |
欧美国产日韩一区二区 |
国产亚洲女人久久久久毛片 |
亚洲视频欧美视频 |
亚洲一区免费 |
欧美日韩中文在线观看 |
最近看过的日韩成人 |
亚洲国产日韩欧美在线99 |
久久精品99国产精品日本 |
久久av二区 |
国产伪娘ts一区 |
午夜欧美视频 |
久久久亚洲国产美女国产盗摄 |
国产精品二区在线观看 |
一区二区三区四区五区精品视频 |
日韩一级片网址 |
欧美金8天国 |
亚洲美女淫视频 |
亚洲欧美日韩国产 |
国产精品色午夜在线观看 |
亚洲一区亚洲 |
久久婷婷久久一区二区三区 |
在线观看久久av |
欧美ab在线视频 |
日韩天堂在线视频 |
亚洲免费一在线 |
国产日韩综合 |
久久亚洲色图 |
91久久久久久久久 |
亚洲一区影音先锋 |
国产一区二区三区不卡在线观看 |
久久www成人_看片免费不卡 |
男女激情视频一区 |
亚洲精选91 |
国产精品久久久久永久免费观看 |
亚洲男人的天堂在线aⅴ视频 |
午夜国产精品视频 |
韩日欧美一区二区 |
欧美激情一区二区 |
亚洲素人一区二区 |
久久久久久久久久久一区 |
亚洲第一在线 |
国产精品videosex极品 |
久久精品国产精品亚洲 |
欧美激情亚洲国产 |
亚洲欧美日韩久久精品 |
国产一区亚洲一区 |
欧美极品在线视频 |
午夜电影亚洲 |
最新成人av网站 |
久久久www |
一本色道久久99精品综合 |
国产午夜久久久久 |
欧美日韩99 |
久久久久综合网 |
亚洲一区二区三 |
亚洲国产精品电影 |
影音先锋国产精品 |
国产精品少妇自拍 |
麻豆91精品 |
亚洲小视频在线观看 |
猫咪成人在线观看 |
亚洲欧美日韩一区二区在线 |
亚洲丶国产丶欧美一区二区三区
|
免费成人在线观看视频 |
一区二区三区高清在线观看 |
美女尤物久久精品 |
先锋影音一区二区三区 |
亚洲精品人人 |
亚洲国产精品123 |
国产婷婷色一区二区三区四区 |
欧美精品在欧美一区二区少妇 |
久久精品99 |
欧美亚洲系列 |
亚洲免费视频成人 |
夜夜嗨av一区二区三区中文字幕 |
欧美激情一区三区 |
久久久亚洲高清 |
久久精品日产第一区二区 |