锘??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠色丁香婷婷综合,国内久久婷婷综合,国产精品视频 http://www.shnenglu.com/ACflying/KNIGHT zh-cn Wed, 24 Sep 2025 07:15:20 GMT Wed, 24 Sep 2025 07:15:20 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爜寰堜笐涓嶈創浜嗭紝鍐嶆湁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闂鏈変綍鐗規畩鎬э紵璇ュ浣曟眰瑙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錛堜笉鍙嬪ソ瀵規暟錛夊強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 /> 絳変環浜庯細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
錛庢妸姣忎釜瀛愬浘鏀剁緝鎴愬崟涓妭鐐癸紝鏍規嵁鍘熷浘鍏崇郴鏋勯犱竴涓湁鍚戞棤鐜浘
4
錛庡垽鏂槸鍚︽湁瑙o紝鏃犺В鍒欒緭鍑猴紙閫鍑猴級
5
錛庡鏂板浘榪涜鎷撴墤鎺掑簭
6
錛庤嚜搴曞悜涓婅繘琛岄夋嫨銆佸垹闄?br />
7
錛庤緭鍑?br /> 灝忕粨錛?br /> 鏁翠釜綆楁硶鐨勬椂闂村鏉傚害澶ф鏄疧(m)錛岃В鍐蟲闂鍙互璇存槸鐩稿綋鏈夋晥浜嗐?br /> 鍦ㄦ暣涓畻娉曠殑鏋勯犮佽瘉鏄庝腑鍙嶅鎻愬埌浜嗕竴涓瘝錛氬縐般傚彂鐜般佸埄鐢ㄤ簡榪欎釜鍥劇殑鐗規畩鎬ц川錛屾垜浠墠鑳藉寰堝ソ鐨勮В鍐抽棶棰樸?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)鍦ㄦ墍鏈夊悗緙涓粠灝忓埌澶ф帓鍒楃殑鈥滃悕嬈♀濄? 鏋勯犳柟娉? 濡備綍鏋勯犲悗緙鏁扮粍鍛紵鏈鐩存帴鏈綆鍗曠殑鏂規硶褰撶劧鏄妸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涔熸病鏈夊叧緋伙紝鍙鑳藉鍦╧涓瓧絎︽瘮杈冪粨鏉熶箣鍓嶅緱鍒扮涓涓瓧絎︿覆澶т簬鎴栬呭皬浜庣浜屼釜瀛楃涓插氨鍙互浜嗐? 鏍規嵁鍓嶇紑姣旇緝絎︾殑鎬ц川鎴戜滑鍙互寰楀埌浠ヤ笅鐨勯潪甯擱噸瑕佺殑鎬ц川錛? 鎬ц川1.1 瀵筴鈮錛孲uffix(i)<kSuffix(j) 絳変環浜?Suffix(i)<Suffix(j)銆? 鎬ц川1.2 Suffix(i)=2kSuffix(j)絳変環浜? Suffix(i)=kSuffix(j) 涓?Suffix(i+k)=kSuffix(j+k)銆? 鎬ц川1.3 Suffix(i)<2kSuffix(j) 絳変環浜? 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 -鍓嶇紑姣旇緝鍏崇郴緇勫悎璧鋒潵絳変環鍦拌〃杈撅紝鑰孯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)鐨勬椂闂村唴鏍規嵁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瀹氫箟鍑芥暟lcp(u,v)=max{i|u=iv}錛屼篃灝辨槸浠庡ご寮濮嬮『嬈℃瘮杈僽鍜寁鐨勫搴斿瓧絎︼紝瀵瑰簲瀛楃鎸佺畫鐩哥瓑鐨勬渶澶т綅緗紝縐頒負榪欎袱涓瓧絎︿覆鐨勬渶闀垮叕鍏卞墠緙銆? 瀵規鏁存暟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銆? 鐩存帴鏍規嵁瀹氫箟錛岀敤欏烘姣旇緝瀵瑰簲瀛楃鐨勬柟娉曟潵璁$畻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鈮鈮) 鏍規嵁鏁板褰掔撼娉曪紝LCP Theorem鎴愮珛銆? 鏍規嵁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)鏃墮棿鍐呰繘琛岄澶勭悊錛屼箣鍚庢瘡嬈¤闂姳璐規椂闂碠(logn)錛屾洿濂界殑鏂規硶鏄疪MQ鏍囧噯綆楁硶錛屽彲浠ュ湪O(n)鏃墮棿鍐呰繘琛岄澶勭悊錛屾瘡嬈¤闂彲浠ュ湪甯告暟鏃墮棿鍐呭畬鎴愩? 瀵逛簬涓涓浐瀹氱殑瀛楃涓睸錛屽叾height鏁扮粍鏄劇劧鏄浐瀹氱殑錛屽彧瑕佹垜浠兘楂樻晥鍦版眰鍑篽eight鏁扮粍錛岄偅涔堣繍鐢≧MQ鏂規硶榪涜棰勫鐞嗕箣鍚庯紝姣忔璁$畻LCP(i,j)鐨勬椂闂村鏉傚害灝辨槸甯告暟綰т簡銆備簬鏄彧鏈変竴涓棶棰樷斺斿浣曞敖閲忛珮鏁堝湴綆楀嚭height鏁扮粍銆? 鏍規嵁璁$畻鍚庣紑鏁扮粍鐨勭粡楠岋紝鎴戜滑涓嶅簲璇ユ妸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) 絳変環浜?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)鏃訛紝絎竴涓瓧絎ξ辨槸涓瀹氱浉絳夌殑錛屼簬鏄悗闈㈠氨絳変環浜庢瘮杈僑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)銆? 鏍規嵁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銆? 浜庢槸鏍規嵁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銆? 鏍規嵁鎬ц川3錛屽彲浠ヤ護i浠?寰幆鍒皀鎸夌収濡備笅鏂規硶渚濇綆楀嚭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鏂規硶錛屽湪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),浣嗘槸濡傛灉鏈夊涓ā寮忎覆,鎴戜滑灝辮鑰冭檻鍋氶傚綋鐨勯澶勭悊浣垮緱瀵規瘡涓ā寮忎覆榪涜鍖歸厤鎵鑺辯殑鏃墮棿灝忎竴浜?鏈綆鍗曠殑棰勫鐞嗚帿榪囦簬寤虹珛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,濡傛灉鐢ㄤ緷嬈℃瘮杈冨搴斿瓧絎︾殑鏂規硶鏉ユ眰鍚戜袱杈規墿灞曠殑鏈澶у?鍒欐渶澶氬彲鑳芥瘮杈僲-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]涓轟腑蹇?鍋囪鍚戜袱杈規墿灞曞埌浜唅-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涓轟腑蹇冪殑鍥炴枃涓?榪欎釜璇佹槑涓庡墠闈㈢殑鎺ㄧ悊綾諱技,鍙槸闇瑕佹敞鎰忎竴鐐?榪欓噷鍒╃敤鍒頒簡'#'榪欎釜鐗規畩瀛楃閬垮厤浜嗘綔鍦ㄧ殑LCP(i,i')瓚呰繃瀹為檯鐨剅鏈澶у肩殑鍗遍櫓.榪欎釜璇佹槑鐣欑粰璇昏呰嚜琛屽畬鎴?鎬諱箣,鎴戜滑宸茬粡紜畾姹備互T[i]涓轟腑蹇冨悜涓よ竟鎵╁睍鐨勬渶澶у肩瓑浠蜂簬姹侺CP(i,i'),鏍規嵁鍓嶉潰鍚庣紑鏁扮粍鍜孡CP鐨勭浉鍏沖唴瀹硅繖涓姝ユ搷浣滃彲浠ュ湪甯告暟鏃墮棿鍐呭畬鎴?鍙鎴戜滑棰勫厛鑺辮垂O(nlogn)鐨勫鏉傚害璁$畻鍚庣紑鏁扮粍,height鏁扮粍鍜岃繘琛岄澶勭悊.鍏朵腑n=len(S)=2m+2. 鐜板湪姣忔姹備互涓涓綅緗甌[i]涓轟腑蹇冪殑鍥炴枃瀛愪覆涓殑鏈闀胯呯殑闀垮害鍙互鍦ㄥ父鏁版椂闂村唴瀹屾垚,鎴戜滑鏋氫婦i浠?鍒癿,渚濇姹傚嚭鎵鏈夌殑榪欎簺鏈闀胯?璁板綍鍏朵腑鏈澶х殑涓涓殑闀垮害,灝辨槸鎵瑕佹眰鐨勬渶闀垮鍥炴枃瀛愪覆鐨勯暱搴?鐢變簬瀵規瘡涓腑蹇冭姳璐規椂闂翠負甯告暟,鎵浠ユ葷殑澶嶆潅搴︿負O(m).鍥犳鏁翠釜綆楁硶鐨勫鏉傚害鏄疧(nlogn+m)=O(2mlog(2m)+m)=O(mlogm),鏄潪甯鎬紭縐鐨勭畻娉?姣斾箣鍓嶇殑騫蟲柟綰х畻娉曞ぇ涓烘敼榪? 鍚庣紑鏁扮粍涓庡悗緙鏍戠殑姣旇緝 閫氳繃涓婇潰鐨勪袱涓緥瀛愮浉淇¤鑰呭凡緇忓鍚庣紑鏁扮粍鐨勫己澶у姛鑳芥湁鎵浜嗚В,鍙︿竴縐嶆暟鎹粨鏋勨斺斿悗緙鏍?涔熷彲浠ョ敤鍦ㄨ繖浜涢棶棰樹腑,閭d箞鍚庣紑鏁扮粍鍜屽悗緙鏍戞湁浠涔堝尯鍒拰鑱旂郴鍛?鎴戜滑鏉ユ瘮杈冧竴涓? 棣栧厛,鍚庣紑鏁扮粍姣旇緝瀹規槗鐞嗚В,涔熸槗浜庣紪紼嬪疄鐜?鑰屼笖涓嶅儚鍚庣紑鏍戦偅鏍烽渶瑕佹秹鍙婂埌鎸囬拡鎿嶄綔,鎵浠ヨ皟璇曡搗鏉ユ瘮杈冩柟渚?絎簩,鍚庣紑鏁扮粍鍗犵敤鐨勭┖闂存瘮鍚庣紑鏍戣灝?鍒氭墠鍒嗘瀽涓垜浠茍娌℃湁鎻愬埌絀洪棿澶嶆潅搴︾殑闂,榪欓噷綆鍗曡涓涓?鍚庣紑鏁扮粍SA鍜屽悕璇嶆暟緇凴ank閮藉彧闇瑕乶涓暣鏁扮殑絀洪棿,鑰屽湪鐢盧ankk璁$畻鍑篠A2k鐨勮繃紼嬩腑闇瑕佺敤涓や釜涓緇存暟緇勬潵杈呭姪瀹屾垚,鍚勫崰n涓暣鏁扮殑絀洪棿,婊氬姩鍦拌繘琛屾搷浣?鏁翠釜綆楁硶鍙渶瑕佽繖鍥涗釜涓緇存暟緇勫拰甯告暟涓緟鍔╁彉閲?鍥犳鎬葷殑絀洪棿鍗犵敤涓?n涓暣鏁?鑰屽悗緙鏍戦氬父鏈?n涓互涓婅妭鐐?閫氬父姣忎釜鑺傜偣瑕佷袱涓暣鏁?鍗充嬌閲囩敤涓浜涙妧宸?鑷沖皯榪樻槸瑕佷繚瀛樹竴涓暣鏁?,姣忎釜鑺傜偣瑕佹湁涓や釜鎸囬拡(鍋囪閲囩敤鍎垮瓙-鍏勫紵琛ㄧず鏂規硶),鍥犳鎬誨叡鐨勭┖闂村崰鐢ㄨ嚦灝戞槸4n涓寚閽堝拰2n涓暣鏁?鑷沖皯鏄痭涓暣鏁?.濡傛灉閲囩敤鍏朵粬鏂規硶琛ㄧず鏍戠姸緇撴瀯,闇瑕佺殑絀洪棿鏇村ぇ.鍙互鐪嬪嚭鍚庣紑鏁扮粍鐨勭┖闂撮渶姹傛瘮鍚庣紑鏍戝皬. 鏈鍚庢瘮杈冨畠浠殑澶嶆潅搴? 棣栧厛鎸夌収瀛楃鎬繪暟|鈭憒鎶婂瓧絎﹂泦鈭戝垎涓轟笁縐嶇被鍨? 鑻鈭憒鏄竴涓父鏁?鍒欑О鈭戜負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鍒嗛挓鏈潵鏈瓙灝辨病鏈夌數銆傘傘傘傘傜幇鍦ㄨ繕娌℃瘮瀹屽氨鍓?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鏃ュ織錛屾劅瑙夋湁鐐規偛浼ょ殑姘旀皼灝辯炕浜嗕竴綃囧垹涓綃囷紝緇撴灉194綃囧垹瀹屻傘傘備粠姝ゅ湪榪欎釜Blog鍐欎笢瑗跨渷璧涘仛瀹屼箣鍚庡敖蹇揪鍒?00錛屽皝鍙鳳紒涔嬪悗瀹岀編鐨勫仛TC銆?br />聽聽聽鍚庡ぉ鐪佽禌浜嗭紝鎴栬呰瑕佽宸ュぇ鐨勪紬紲炵墰铏愪簡錛屽湪榪欓噷Bless Every Hrbeu鈥榮 Acmers鍙栧緱濂芥垚緇╋紒 ]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美一区2区三区4区公司二百 |
怡红院av一区二区三区 |
一区二区免费在线观看 |
欧美日韩亚洲高清 |
亚洲欧美日韩视频一区 |
欧美激情精品久久久久久免费印度 |
亚洲免费电影在线 |
国产一区二区中文字幕免费看 |
久久先锋影音 |
中文日韩在线 |
亚洲国产精品一区二区www在线 |
老司机67194精品线观看 |
亚洲精品乱码久久久久久黑人
|
欧美国产高潮xxxx1819 |
亚洲一卡久久 |
亚洲精品少妇网址 |
精东粉嫩av免费一区二区三区 |
亚洲黄页一区 |
欧美成人精品在线播放 |
亚洲视频高清 |
欧美一区二区在线观看 |
一本色道久久综合亚洲精品不卡
|
欧美成人综合一区 |
欧美四级电影网站 |
欧美日韩久久精品 |
国产精品自拍网站 |
国产精品久久久久一区 |
欧美午夜视频在线 |
欧美网站在线观看 |
在线成人国产 |
欧美一区二区三区男人的天堂 |
你懂的视频一区二区 |
男同欧美伦乱 |
亚洲欧美成人一区二区三区 |
欧美亚洲在线播放 |
欧美日韩亚洲综合在线 |
影音先锋亚洲精品 |
欧美在线91 |
一区二区三区欧美激情 |
免费的成人av |
欧美日韩午夜视频在线观看 |
国产一区二区三区的电影
|
午夜免费电影一区在线观看 |
亚洲午夜精品久久久久久app |
日韩视频一区二区在线观看
|
国产精品入口尤物 |
国产精品一级二级三级 |
在线视频一区观看 |
亚洲精品一区在线观看香蕉 |
9久草视频在线视频精品 |
一区二区不卡在线视频 午夜欧美不卡在
|
日韩亚洲精品电影 |
亚洲一区www |
久久久精品日韩 |
亚洲国产精品视频 |
亚洲宅男天堂在线观看无病毒 |
模特精品裸拍一区 |
国产精品久久久久久久久久直播
|
激情视频一区 |
久久久噜噜噜久久人人看 |
可以看av的网站久久看 |
亚洲国产成人午夜在线一区 |
亚洲乱码国产乱码精品精天堂 |
久久综合九色综合网站 |
曰本成人黄色 |
欧美成人免费在线观看 |
久久亚洲高清 |
亚洲日韩中文字幕在线播放 |
欧美激情精品久久久久久大尺度 |
麻豆精品精品国产自在97香蕉 |
悠悠资源网亚洲青 |
欧美国产一区二区在线观看 |
女人天堂亚洲aⅴ在线观看 |
亚洲国产精品日韩 |
欧美影院精品一区 |
欧美一区二区三区视频 |
国产香蕉97碰碰久久人人 |
一本色道久久综合一区 |
久久精品亚洲乱码伦伦中文 |
亚洲欧洲一区 |
久久精品一区蜜桃臀影院 |
欧美日韩国产在线 |
亚洲国产精品欧美一二99 |
亚洲国产日韩精品 |
欧美日韩国产一区 |
欧美在线观看视频一区二区三区 |
欧美一区二区视频在线 |
亚洲人成亚洲人成在线观看图片
|
欧美日本亚洲视频 |
亚洲二区在线视频 |
亚洲黄色在线 |
国产亚洲欧美另类一区二区三区 |
免播放器亚洲 |
午夜一区不卡 |
在线日本高清免费不卡 |
久久精品免费观看 |
免费不卡在线观看av |
亚洲午夜精品一区二区 |
久久se精品一区二区 |
国产性天天综合网 |
亚洲黄色在线观看 |
国产三级精品三级 |
亚洲国产一区在线 |
国产婷婷精品 |
99re这里只有精品6 |
精品91免费 |
亚洲已满18点击进入久久 |
国产精品视频在线观看 |
欧美18av |
国产亚洲福利 |
亚洲精品午夜 |
免费不卡在线观看 |
欧美日韩亚洲综合一区 |
免费国产一区二区 |
国产精品主播 |
一二三四社区欧美黄 |
最新日韩av |
久久午夜精品一区二区 |
欧美在线free |
国产精品久久国产愉拍 |
欧美亚洲色图校园春色 |
亚洲女人天堂成人av在线 |
亚洲精品国久久99热 |
久久久久久穴 |
99视频一区 |
老司机67194精品线观看 |
久久久亚洲精品一区二区三区 |
欧美天天视频 |
日韩亚洲欧美高清 |
亚洲精品日韩精品 |
蜜桃av综合 |
欧美777四色影视在线 |
国产在线观看91精品一区 |
亚洲一区视频在线观看视频 |
亚洲午夜精品一区二区三区他趣
|
欧美成人xxx |
欧美成人精品 |
在线观看国产成人av片 |
久久精品一区二区 |
免费在线看一区 |
在线免费精品视频 |
另类天堂视频在线观看 |
免费看的黄色欧美网站 |
亚洲国产欧美在线 |
欧美大片一区二区三区 |
亚洲精品社区 |
亚洲永久网站 |
久久亚洲精品网站 |
久久综合精品一区 |
欧美日韩精品久久 |
一本色道久久精品 |
久久国产精品久久久久久电车 |
国产亚洲欧美色 |
久久综合久久久久88 |
亚洲韩国日本中文字幕 |
亚洲视频一二 |
欧美成熟视频 |
一本不卡影院 |
欧美亚洲网站 |
国内综合精品午夜久久资源 |
aa级大片欧美三级 |
午夜视频在线观看一区二区 |
欧美国产视频在线 |
美女国产精品 |
一本色道久久综合 |
国产手机视频精品 |
久热精品视频在线观看 |
91久久精品美女 |
午夜精品福利视频 |
尤物yw午夜国产精品视频 |
欧美不卡视频一区发布 |
一区二区三区免费观看 |
久久综合狠狠 |
亚洲欧美日韩精品一区二区 |
欧美精品一区二区三区在线看午夜
|
免费成人你懂的 |
一本大道久久精品懂色aⅴ |
国产精品99免视看9 |
久久精品一本 |
亚洲免费在线观看 |
亚洲国产日韩精品 |
久久精品国产一区二区电影 |
亚洲三级毛片 |
国产一区二区三区日韩欧美 |
欧美日韩91 |
久久综合婷婷 |
欧美在线网址 |
亚洲一区二区三区中文字幕 |
欧美电影电视剧在线观看 |
性8sex亚洲区入口 |
一区二区日韩伦理片 |
黄色亚洲网站 |
国产精品伊人日日 |
欧美日韩国产综合新一区 |
久久天天狠狠 |
久久激情综合 |
欧美成人免费在线观看 |
欧美一级午夜免费电影 |
一区二区三区高清在线 |
亚洲国产专区校园欧美 |