锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久午夜精品,91久久精品国产成人久久,久久久久久久久久久久久久
http://www.shnenglu.com/jaysoon/category/10355.htmlzh-cn Mon, 13 Jun 2011 07:41:54 GMT Mon, 13 Jun 2011 07:41:54 GMT 60 鏈闀塊掑瀛愬簭鍒?LIS)瑙f硶璇﹁堪 http://www.shnenglu.com/jaysoon/articles/148382.htmljaysoon jaysoon Thu, 09 Jun 2011 15:44:00 GMT http://www.shnenglu.com/jaysoon/articles/148382.html http://www.shnenglu.com/jaysoon/comments/148382.html http://www.shnenglu.com/jaysoon/articles/148382.html#Feedback 0 http://www.shnenglu.com/jaysoon/comments/commentRss/148382.html http://www.shnenglu.com/jaysoon/services/trackbacks/148382.html 姹傛暟緇勪腑鏈闀塊掑瀛愬簭鍒楋紙 Longest Increasing Subsequence, LIS 錛?/span>
LIS闂鏄畻娉曚腑鐨勭粡鍏擱鐩紝浼犵粺鐨勮В娉曟槸浣跨敤鍔ㄦ佽鍒掞紝鏃墮棿澶嶆潅搴︽槸O(n^2)錛涙敼榪涚殑鏂規硶鏃墮棿澶嶆潅搴︽槸O(nlogn)銆備絾鏄叧浜庢敼榪涚殑綆楁硶鐨勪粙緇嶅敖綆$綉涓婃湁寰堝璧勬簮錛屼絾鏄湁璁稿鐪嬭搗鏉ユ病闂錛屼絾鏄粡涓嶈搗鎺ㄦ暡錛屾垜鐪嬬殑鏃跺欐劅瑙夋湁鐐圭湅涓嶆槑鐧斤紝鏌ラ槄鍗婂ぉ寮勬噦鍚庡啀鍥炲幓鐪嬶紝鍙戠幇浠栦滑鐨勮〃榪版湁闂錛屽洜姝ゆ葷粨涓涓嬨?/em>
榪欑瘒鎬葷粨浣跨敤浠庝紶緇熻В娉曢愭鏀硅繘鐨勬紨緇庢柟娉曪紝騫剁粰鍑轟竴浜涙帹鐞嗐?/em>
濡傛灉璇昏呬笉鍠滄榪欑婕旂粠鎬濊冩柟娉曪紝鎺ㄨ崘Slyar 鐨勬柟娉曪紝浠栦粠鍙︿竴涓搴︾湅寰呰繖涓棶棰橈紝鍐欏緱鍗佸垎綆媧侊紝浣嗘槸娌℃湁鎺ヨЕ榪囩殑璇濓紝鍙兘涓嶆槗鐞嗚В銆?/em>
鏈枃浠嶆湁璁稿涓嶈凍錛屾榪庢寚姝c?/strong>
浼犵粺鐨勮В娉曟槸浣跨敤鍔ㄦ佽鍒掋傚師鐞嗗涓嬶細
data[i]琛ㄧず鏁扮粍涓殑絎?/span>i涓厓绱狅紱
lis[i]琛ㄧず浠ュ厓绱?/span>i緇撳熬鐨勬渶闀塊掑瀛愬簭鍒楅暱搴︼紱
閭d箞 lis[i] = max(lis[j]) + 1, j ∈ {k | data[k] < data[i], k < i}
鏃墮棿澶嶆潅搴︽槸 O(n^2)錛屽畠鐨勪富瑕佷紭鐐規槸綆楁硶綆鍗曪紝鍙互鏋勯犳渶闀塊掑瀛愬簭鍒椼?/span>
int lis[N]; int LIS_DP( int * data, int n) { memset(lis, 1 , n * sizeof (lis[ 0 ])); for ( int i = 1 ; i != n; ++ i) { for ( int j = 0 ; j != i; ++ j) { if (data[i] > data[j] && lis[i] < lis[j] + 1 ) lis[i] = lis[j] + 1 ; } } int max = 0 ; for ( int i = 0 ; i != n; ++ i) if (max < lis[i]) max = lis[i]; return max; }
鍙︿竴縐嶆柟娉曠◢寰湁浜涘鏉傦紝瀹冩槸閽堝涓婇潰鏂規硶鐨勪竴縐嶆敼榪涳紝鏃墮棿澶嶆潅搴︽槸 O(nlogn)銆備笅闈嬌鐢ㄦ笎榪戠殑鏂規硶鏉ュ垎鏋愯幏寰椼?/span>
棣栧厛鎴戜滑鏉ュ垎鏋愪竴涓嬩笂闈㈢畻娉曠殑涓嶈凍錛屽湪涓婇潰鐨勬眰瑙d腑錛屾瘡涓?/span>lis[i]姹傝В鐨勬椂闂村鏉傚害鏄?/span>O(n)錛屼絾榪欎笉鏄繀闇鐨?/span>
0 1 2 3 4 5 6 7
data[]: 2 5 6 2 3 4 7 4
lis[]: 1 2 3 1 2 3 4 3
渚嬪錛屽綋姹?/span>lis[6]鏃訛紝鏄笉鐢ㄥ拰 data[3]銆?/span>data[4]姣旇緝鐨勶紝鍥犱負宸茬粡鐭ラ亾瀹冧滑鎵鍦ㄧ殑鏈澶ч掑瀛愬簭鍒楃殑鏈鍚庝竴涓厓绱?/span>data[5] < data[6]錛涗篃灝辨槸璇達紝褰撴垜浠冨療絎?/span>i涓厓绱犳椂錛屽鍓嶉潰 i-1涓厓绱犵殑浠諱綍涓涓掑瀛愬簭鍒楋紝濡傛灉榪欎釜瀛愬簭鍒楃殑鏈鍚庝竴涓厓绱犳瘮 data[i]灝忥紝閭d箞灝卞彲浠ュ皢 data[i]鍔犲湪榪欎釜瀛愬簭鍒楀悗闈紝鏋勬垚涓涓柊鐨勬洿闀跨殑閫掑瀛愬簭鍒楋紝鑰屼笉鐢ㄦ瘮杈冭繖涓瓙搴忓垪鍓嶉潰鐨勫厓绱犲拰 data[i]鐨勫叧緋匯?/span>
鐢辨鎴戜滑寰楀嚭絎竴涓惎鍙戝紡鏂規硶錛屽綋璁$畻 lis[i]鏃訛紝鎴戜滑鍙叧蹇冩瘡涓墠 i-1鍏冪礌涓掑瀛愬簭鍒楃殑鏈鍚庝竴涓厓绱犵殑鍊箋?/span>
閽堝絎竴縐嶆柟娉曞紩鍏ョ殑瑙傜偣錛屾彁鍑虹浜屼釜鍚彂寮忔柟娉曪紝鍚屾牱姹?/span>lis[6]錛屽鍓?/span>i-1涓厓绱狅紝鑾峰緱涓や釜闀垮害涓?/span>3鐨勯掑瀛愬簭鍒?/span>2銆?/span>5銆?/span>6鍜?/span>2銆?/span>3銆?/span>4錛屾鏃跺凡鐭?/span>data[6] > 6涓?/span>data[6]澶т簬 4錛屾墍浠?/span>data[6]鍙互鎺ュ湪浠諱綍涓涓瓙搴忓垪鍚庨潰錛屾瀯鎴愰暱搴︿負 4鐨勬柊閫掑搴忓垪銆傝繖涓椂鍊欙紝浼氬彂鐜頒竴涓惎鍙戞柟娉曪紝 data[6]涓嶇敤鍜?/span>6姣旇緝錛屽洜涓哄彧闇 data[6]澶т簬 4灝卞彲浠ュ緱鍑轟竴涓暱搴︿負 4鐨勯掑搴忓垪銆?/span>
鎵浠ュ緱鍑虹浜屼釜鍚彂寮忔柟娉曪紝褰撹綆?/span>lis[i]鏃訛紝瀵瑰悓鏍烽暱搴︾殑瀛愬簭鍒楋紝鎴戜滑鍙叧蹇冨畠浠渶鍚庡厓绱犵殑鍊兼渶灝忕殑涓涓殑鍊箋?/span>
鐢辨錛岀敱涓涓暟緇?/span>last_min璁板綍涓婇潰鐨勫鹼紝鍗沖綋璁$畻 lis[i]鏃訛紝 last_min[k]琛ㄧず鍓?/span>i-1涓厓绱犱腑闀垮害涓?/span>k鐨勬墍鏈夐掑瀛愬簭鍒楃殑鏈鍚庝竴涓厓绱犵殑鏈灝忓箋?/span>
璁?/span>max_len琛ㄧず褰撳墠宸茶幏寰楃殑鏈闀跨殑閫掑瀛愬簭鍒椼?/span>
褰撹冨療 data[i]鏃訛紝濡傛灉 data[i] > last_min[max_len] 錛岄偅涔堝皢 data[i]鎺ュ湪榪欎釜搴忓垪鍚庨潰錛屼究鏋勬垚涓涓柊鐨勯暱搴︿負 max_len+1鐨勫簭鍒楋紝璇ュ簭鍒楃殑鏈鍚庝竴涓厓绱犳槸 data[i]錛涘惁鍒欙紝鎵懼埌涓涓渶澶х殑 j錛屼嬌 last_min[j]<data[i]錛堢敱浜庢煡鎵炬柟寮忥紝涔熻鏄?/span>data[i]<=last_min[j+1]錛夛紝閭d箞鎶?/span>data[i]鎺ュ湪榪欎釜搴忓垪鍚庨潰錛屼究鏋勬垚涓涓暱搴︿負 j+1鐨勬柊搴忓垪錛屾洿鏂?/span>last_min[j+1]銆?/span>
int lis[N]; // lis[i]琛ㄧず浠ュ厓绱爄緇撳熬鐨勬渶闀塊掑瀛愬簭鍒楅暱搴?/span>int last_min[N]; // last_min[i]琛ㄧず闀垮害涓篿鐨勬墍鏈夐掑瀛愬簭鍒楃殑 // 鏈鍚庝竴涓厓绱犵殑鏈灝忓?/span>int max_len; int LIS_DP( int * data, int n) { memset(lis, 1 , n * sizeof (lis[ 0 ])); last_min[ 1 ] = data[ 0 ]; max_len = 1 ; for ( int i = 1 ; i != n; ++ i) { // 濡傛灉data[i]姣旀渶闀塊掑搴忓垪鐨勬渶鍚庝竴涓厓绱犲ぇ錛?br /> // 閭d箞鐩存帴鍔犲湪瀹冨悗闈究鍙?/span> if (data[i] > last_min[max_len]) { ++ max_len; last_min[max_len] = data[i]; lis[i] = max_len; } else { // 鍚﹀垯鏌ユ壘鍘嗗彶鏈闀塊掑搴忓垪 for ( int j = max_len - 1 ; j != 0 ; -- j) { if (data[i] > last_min[j]) // 涔熷氨鏄錛宒ata[i] <= last_min[j+1] { lis[i] = j + 1 ; last_min[j + 1 ] = data[i]; // 鏇存柊 break ; } } } } return max_len; }
濡備笂鎵紺猴紝铏界劧宸茬粡榪涜浜嗗緢澶х殑浼樺寲錛屼絾鏄綋鍓嶇殑鏃墮棿澶嶆潅搴︿粛鏄?/span>O(n^2)錛屽綋鐒跺熀鏈彲浠ョ‘瀹氱殑鏄紝鐜板湪鐨勭畻娉曟瘮鍘熸潵鐨勬晥鐜囨彁楂樹簡寰堝銆?/span>
涓嬮潰鎴戜滑鍒嗘瀽涓涓?/span>last_min鏁扮粍鐨勬ц川錛?/span>
鐢卞畾涔?/span>last_min[i]琛ㄧず闀垮害涓?/span>i鐨勫簭鍒?/span>A鐨勬渶鍚庝竴涓厓绱犵殑鍊鹼紝 last_min[i-1]琛ㄧず闀垮害涓?/span>i-1鐨勫簭鍒?/span>B鐨勬渶鍚庝竴涓厓绱犵殑鍊鹼紝閭d箞 last_min[i-1]<last[i]錛涘惁鍒欏簭鍒?/span>A鐨勫墠 i-1涓厓绱犳瀯鎴愮殑搴忓垪渚垮彲鏇夸唬搴忓垪 B銆傛墍浠?/span>last_min鏄湁搴忕殑銆?/span>
鍥犳鍦ㄤ笂闈㈢殑鏌ユ壘涓彲浠ヤ嬌鐢ㄤ簩鍒嗘煡鎵撅紝鏁堢巼涓?/span>O(logn)錛屼嬌寰楁葷殑澶嶆潅搴︿負 O(nlogn)銆?/span>
// 榪斿洖arr涓瓑浜庢垨絎竴涓ぇ浜巚al鐨勪綅緗?/span>int BinarySearch( int * arr, int left, int right, int val) { int mid = 0 ; int l = left; int r = right; while (l <= r) { mid = (l + r) >> 1 ; if (arr[mid] > val) r = mid - 1 ; else if (arr[mid] < val) l = mid + 1 ; else return mid; } return l; } int last_min[N]; // last_min[i]琛ㄧず闀垮害涓篿鐨勬墍鏈夐掑瀛愬簭鍒楃殑 // 鏈鍚庝竴涓厓绱犵殑鏈灝忓?/span>int max_len; int LIS_DP( int * data, int n) { last_min[ 1 ] = data[ 0 ]; max_len = 1 ; for ( int i = 1 ; i != n; ++ i) { // 濡傛灉data[i]姣旀渶闀塊掑搴忓垪鐨勬渶鍚庝竴涓厓绱犲ぇ錛?br /> // 閭d箞鐩存帴鍔犲湪瀹冨悗闈究鍙?/span> if (data[i] > last_min[max_len]) { ++ max_len; last_min[max_len] = data[i]; } else { // 鍚﹀垯鏌ユ壘鍘嗗彶鏈闀塊掑搴忓垪 int j = BinarySearch(last_min, 1 , max_len, data[i]); last_min[j] = data[i]; } } return max_len; }
鍦ㄧ▼搴忎簩涓紝 lis鏁扮粍瀹屽叏娌℃湁浣滅敤錛屾墍浠ュ湪紼嬪簭涓変腑娌℃湁浣跨敤銆?/span>
涓庣▼搴忎竴鐩告瘮錛岀▼搴忎笁鍦ㄦ晥鐜囦笂鏈夋槑鏄劇殑鎻愬崌錛屼絾鏄笉鑳芥牴鎹?/span>last_min鏋勯犲嚭鏈闀塊掑瀛愬簭鍒椼?/span>
鍙傝冩枃鐚?/span>
緙栫▼涔嬬編—寰蔣鎶鏈潰璇曞績寰?2.16鑺?/span>
]]>POJ 2115 C Looooops瑙i鎶ュ憡 http://www.shnenglu.com/jaysoon/articles/112245.htmljaysoon jaysoon Sun, 11 Apr 2010 08:41:00 GMT http://www.shnenglu.com/jaysoon/articles/112245.html http://www.shnenglu.com/jaysoon/comments/112245.html http://www.shnenglu.com/jaysoon/articles/112245.html#Feedback 0 http://www.shnenglu.com/jaysoon/comments/commentRss/112245.html http://www.shnenglu.com/jaysoon/services/trackbacks/112245.html http://acm.pku.edu.cn/JudgeOnline/problem?id=2115 鏈鏄竴閬撴暟璁虹殑鍏ラ棬棰橈紝妯″瀷涓烘眰 ax = b (mod n)錛屾湰棰樹腑錛宎 = C, b = B-A, n = 2^k 鍥犳浣跨敤姹傝В妯$嚎鎬ф柟紼嬬畻娉昺odular_linear銆傚叧浜庣畻娉曠殑璇︾粏鍘熺悊鍙弬瑙?a title="嬈у嚑閲屽痙_鎵╁睍嬈у嚑閲屽痙_妯$嚎鎬ф柟紼? href="http://www.shnenglu.com/RyanWang/archive/2009/07/19/90525.html">嬈у嚑閲屽痙_鎵╁睍嬈у嚑閲屽痙_妯$嚎鎬ф柟紼?/a>錛岃繖綃嘼log瀵圭浉鍏崇殑綆楁硶緇欏嚭浜嗚緇嗙殑璇佹槑錛屾帹鑽愩?br> 涓嬮潰緇欏嚭鏈鐨勪唬鐮侊紝鏈鏈夊嚑鐐歸渶瑕佹敞鎰忥細 1.闇瑕佷嬌鐢?4浣嶆暣鏁拌綆楋紝鍥犱負2^32瀵規櫘閫氭暣鏁頒細婧㈠嚭錛?br> 2.絎?8琛岋紝鍦ㄦ眰n鏃訛紝鍥犱負鍦–++涓紝榛樿0x01涓篿nt鍨嬶紝濡傛灉涓嶅姞寮哄埗杞崲錛岄偅涔堢Щ浣嶅悗浼氭孩鍑猴紱鎵浠ュ己鍒剁被鍨嬭漿鎹㈡槸蹇呴』鐨勩?br>
1 #include < cstdio > 2 typedef long long Int64; 3 4 // ax + by = d 鍏朵腑d = gcd(a,b) 5 Int64 extend_euclid(Int64 a, Int64 b, Int64 & x, Int64 & y) 6 { 7 if (b == 0 ) 8 { 9 x = 1 ; 10 y = 0 ; 11 return a; 12 } 13 else 14 { 15 Int64 gcd, t; 16 gcd = extend_euclid(b, a % b, x, y); 17 18 t = x; 19 x = y; 20 y = t - a / b * y; 21 return gcd; 22 } 23 } 24 25 // ax = b mod n 26 Int64 modular_linear(Int64 a, Int64 b, Int64 n) 27 { 28 Int64 x = 0 ; 29 Int64 y = 0 ; 30 Int64 d = 0 ; 31 32 d = extend_euclid(a,n,x,y); 33 34 if (b % d == 0 ) 35 { 36 x = (x * (b / d)) % n + n; 37 return x % (n / d); 38 } 39 return - 1 ; 40 } 41 42 int main() 43 { 44 Int64 A,B,C,k; 45 46 while (scanf( " %lld%lld%lld%lld " , & A, & B, & C, & k),k) 47 { 48 Int64 n = (Int64) 0x01 << k; 49 50 Int64 res = modular_linear(C, B - A, n); 51 if (res == - 1 ) 52 { 53 printf( " FOREVER\n " ); 54 } 55 else 56 { 57 printf( " %lld\n " ,res); 58 } 59 } 60 61 return 0 ; 62 } 63
]]> POJ 3349 Snowflake Snow Snowflakes 瑙i鎶ュ憡 http://www.shnenglu.com/jaysoon/articles/108745.htmljaysoon jaysoon Tue, 02 Mar 2010 13:57:00 GMT http://www.shnenglu.com/jaysoon/articles/108745.html http://www.shnenglu.com/jaysoon/comments/108745.html http://www.shnenglu.com/jaysoon/articles/108745.html#Feedback 0 http://www.shnenglu.com/jaysoon/comments/commentRss/108745.html http://www.shnenglu.com/jaysoon/services/trackbacks/108745.html 涓栫晫涓婃病鏈変袱鐗囧畬鍏ㄧ浉鍚岀殑闆姳錛屾湰棰樿鍒ゆ柇鏄惁鏈変袱鐗囬洩鑺卞畬鍏ㄧ浉鍚屻?br> 棰樹腑瀵歸洩鑺辮繘琛屼簡綆鍖栵紝鍙槸綆鍗曠殑灝嗛洩鑺辯殑鍏釜鑷傞暱浣滀負鏁版嵁錛屽鏋滆繘涓姝ユ牴鎹垎褰㈠鎶借薄闆姳鐨勮瘽錛岄偅涔堥鐩殑闅懼害浼氭湁鎵澧炲姞銆?br> 鐢變簬鏁版嵁鐨勮妯″緢澶э紝鎵浠ュ浣曟瘮杈冧袱鐗囬洩鑺辨槸鍏抽敭銆傚緢鑷劧鐨勯夋嫨鎻愬彇闆姳鐨勭壒寰侊紝鎵浠ュ簲璇ユ牴鎹叚涓噦闀胯璁″畠鐨勭壒寰侊紝璇ョ壒寰侀噺璁捐鐨勫ソ鍧忔槸紼嬪簭鏁堢巼鐨勪富瑕佸洜绱犮?br> 鏈В娉曞厛綆鍗曠殑灝嗗悇涓噦闀夸箻浠ヤ竴涓郴鏁板茍鐩稿姞浣滀負闆姳鐨勭壒寰佸鹼紝鐒跺悗灝嗚鐗瑰緛鍊間綔涓烘暎鍒楀煎姞鍏ュ埌琛ㄤ腑錛屾渶鍚庢煡鎵炬槸鍚︽湁鐩稿悓鐨勯洩鑺卞瓨鍦ㄣ?br>
#include < cstdio > const int SNOWNUM = 100005 ; const int HASHSIZE = 1000000 ; struct staticList{ int data[ 6 ]; int next; }; staticList sList[SNOWNUM]; int newNode; int nHashIndex[HASHSIZE + 5 ]; int main() { int i,j; int num; bool suc; int tmp[ 6 ],data[ 6 ]; scanf( " %d " , & num); for (i = 0 ; i < num; ++ i) sList[i].next = - 1 ; for (i = 0 ; i < HASHSIZE; ++ i) nHashIndex[i] = - 1 ; newNode = 0 ; suc = false ; for (i = 0 ; i < num; ++ i) { int nClockSt = 0 , nClockVa = 0 , nClockVaTemp = 0 ; int nCountSt = 0 , nCountVa = 0 , nCountVaTemp = 0 ; for (j = 0 ; j < 6 ; ++ j) scanf( " %d " , & tmp[j]); for (j = 0 ; j < 6 ; ++ j) { nClockVaTemp = tmp[j] * 6 + tmp[(j + 1 ) % 6 ] * 5 + tmp[(j + 2 ) % 6 ] * 4 + tmp[(j + 3 ) % 6 ] * 3 + tmp[(j + 4 ) % 6 ] * 2 + tmp[(j + 5 ) % 6 ]; if (nClockVa < nClockVaTemp) {nClockVa = nClockVaTemp; nClockSt = j;} nCountVaTemp = tmp[j] * 6 + tmp[(j + 5 ) % 6 ] * 5 + tmp[(j + 4 ) % 6 ] * 4 + tmp[(j + 3 ) % 6 ] * 3 + tmp[(j + 2 ) % 6 ] * 2 + tmp[(j + 1 ) % 6 ]; if (nCountVa < nCountVaTemp) {nCountVa = nCountVaTemp; nCountSt = j;} } if (nClockVa > nCountVa) { for (j = 0 ; j < 6 ; ++ j) data[j] = tmp[(nClockSt + j) % 6 ]; } else { for (j = 0 ; j < 6 ; ++ j) data[j] = tmp[(nCountSt + 6 - j) % 6 ]; } int nValue = nClockVa > nCountVa ? nClockVa : nCountVa; nValue %= HASHSIZE; if (nHashIndex[nValue] != - 1 ) { int next = nHashIndex[nValue]; while (next != - 1 ) { for (j = 0 ; j < 6 ; ++ j) if (data[j] != sList[next].data[j]) break ; if (j == 6 ) { suc = true ; goto en; } next = sList[next].next; } for (j = 0 ; j < 6 ; ++ j) sList[newNode].data[j] = data[j]; sList[newNode].next = nHashIndex[nValue]; nHashIndex[nValue] = newNode; ++ newNode; } else { for (j = 0 ; j < 6 ; ++ j) sList[newNode].data[j] = data[j]; nHashIndex[nValue] = newNode; ++ newNode; } } en: if (suc) { for ( ++ i; i < num; ++ i) { for (j = 0 ; j < 6 ; ++ j) scanf( " %d " , & tmp[j]); } } if (suc) printf( " Twin snowflakes found.\n " ); else printf(" No two snowflakes are alike.\n " ); return 0 ; }
]]> POJ Scout YYF I 瑙i鎶ュ憡 http://www.shnenglu.com/jaysoon/articles/96016.htmljaysoon jaysoon Sat, 12 Sep 2009 13:36:00 GMT http://www.shnenglu.com/jaysoon/articles/96016.html http://www.shnenglu.com/jaysoon/comments/96016.html http://www.shnenglu.com/jaysoon/articles/96016.html#Feedback 0 http://www.shnenglu.com/jaysoon/comments/commentRss/96016.html http://www.shnenglu.com/jaysoon/services/trackbacks/96016.html /* * Pro(i)琛ㄧず涓嶉亣鍒伴浄鐨勬儏鍐典笅錛屽埌杈緄姝ョ殑鍑犵巼錛岄偅涔? * Pro(n) = Pro(n-1) * p + Pro(n-2) * (1-p) * 棣栧厛姹傞掓帹鍏紡錛岀敱鐗瑰緛鏂圭▼ x^2 - p*x -(1-p) = 0 姹傚緱鐗瑰緛鏍? p-1 鍜?1 * 鎵浠ro(n) = C1 + C2*(p-1)^n * 灝哖ro(1)=1 Pro(2)=p浠e叆錛屾眰寰楀緟瀹氱郴鏁癈1 = -1/(p-2), C2 = 1/(p-2) * 鏁匬ro(n) = -1/(p-2) + 1/(p-2)^n * * 鍋囪鍦ㄤ綅緗甼棣栨閬囧埌闆鳳紝閭d箞鍒拌揪浣嶇疆k-1鐨勫嚑鐜囨槸 Pro(k-1) * 緇忚繃闆峰悗瀛樻椿鐨勫嚑鐜囨槸 Pro(k-1) * (1-p) * 灝嗚繖涓煎嵆涓篴 * * 鍋囪鍙堢粡榪噒姝ョ浜屾閬囧埌闆鳳紝閭d箞鍒拌揪t-1姝ョ殑鍑犵巼鏄?a*Pro(t-1) * 緇忚繃闆峰悗瀛樻椿鐨勫嚑鐜囨槸 a * Pro(t-1) * (1-p) * * 浠ユ綾繪帹 */
#include < iostream > #include < algorithm > #include < cmath > using namespace std; int main() { const int SIZE = 15 ; int iMineNum; double p; int pMinePos[SIZE]; // 璁板綍闆風殑浣嶇疆 double pRes[SIZE]; // pRes[i]琛ㄧず緇忚繃闆穒鍚庡瓨媧諱笅鏉ョ殑鍑犵巼 while (scanf( " %d%lf " , & iMineNum, & p) != EOF) { * (pMinePos + 0 ) = 0 ; // 涓轟簡緇熶竴鍚庨潰鐨勮綆?nbsp; for ( int i = 1 ; i <= iMineNum; ++ i) scanf( " %d " , (pMinePos + i)); sort(pMinePos,pMinePos + iMineNum + 1 ); // 瀵歸浄鐨勪綅緗繘琛屾帓搴?nbsp; pRes[ 0 ] = 1 ; // 涓轟簡緇熶竴鍚庨潰鐨勮綆?nbsp; for ( int i = 1 ; i <= iMineNum; ++ i) { /**/ /* 璁$畻閬囧埌闆蜂箣鍓嶏紝瀛樻椿鐨勫嚑鐜?/span>*/ pRes[i] = - 1 / (p - 2 ) + 1 / (p - 2 ) * pow((p - 1 ),pMinePos[i] - pMinePos[i - 1 ] - 1 ); /**/ /**/ pRes[i] *= ( 1 - p) * pRes[i - 1 ]; } printf( " %.7lf\n " ,pRes[iMineNum]); } return 0 ; }
]]> 鍥捐鏈澶х綉緇滄祦錛堜竴錛?POJ 1273 瑙i鎶ュ憡 http://www.shnenglu.com/jaysoon/articles/81143.htmljaysoon jaysoon Sun, 26 Apr 2009 11:18:00 GMT http://www.shnenglu.com/jaysoon/articles/81143.html http://www.shnenglu.com/jaysoon/comments/81143.html http://www.shnenglu.com/jaysoon/articles/81143.html#Feedback 0 http://www.shnenglu.com/jaysoon/comments/commentRss/81143.html http://www.shnenglu.com/jaysoon/services/trackbacks/81143.html 棰樼洰閾炬帴http://acm.pku.edu.cn/JudgeOnline/problem?id=1273 鏈鏄渶澶ф祦綆楁硶鐨勭畝鍗曞簲鐢ㄣ?br> 鏈澶х綉緇滄祦鐨勫熀鏈濇兂寰堢畝鍗曗斺斾粠鏌愪釜鍒濆嫻佸紑濮嬶紝鍙嶅鐨勫鍔犳祦鐨勬祦閲忕煡閬撲笉鑳藉啀鏀硅繘涓烘銆傛渶鍚庡緱鍒扮殑嫻佸皢鏄竴涓渶澶ф祦銆?br> 瀹氱悊 璁?P 鏄綉緇?G 涓粠璧風偣鍒扮粓鐐規弧瓚充竴涓嬫潯浠剁殑涓鏉¤礬寰勶細 (a) 瀵?span style="FONT-FAMILY: Comic Sans MS">P涓殑姣忔潯姝e悜杈?span style="FONT-FAMILY: Comic Sans MS">(i,j)錛?F ij < C ij (b)瀵?span style="FONT-FAMILY: Comic Sans MS">P涓殑姣忔潯鍙嶅悜杈?span style="FONT-FAMILY: Comic Sans MS">(i,j)錛?F ij > 0 璁?D 鏄敱P 涓墍鏈夋鍚戣竟(i,j) 瀵瑰簲鐨勬暟鍜?span style="FONT-FAMILY: Comic Sans MS">P涓墍鏈夊弽鍚戣竟(i,j) 瀵瑰簲鐨勬暟緇勬垚銆?br> Δ =min D Fij 濡傛灉(i,j)涓嶅湪P涓?br> F * ij ={ Fij + Δ 濡傛灉(i,j)鍦≒涓笖鏄鍚戠殑 Fij -Δ 濡傛灉(i,j)鍦≒涓笖涓嶆槸姝e悜鐨?/span>
鏍規嵁涓婅堪瀹氱悊錛屽鏋滄壘涓嶅埌璺緞婊¤凍涓婅堪瀹氱悊錛岄偅涔堝緱鍒扮殑嫻佷究鏄渶澶х殑銆傛垜浠彲浠ユ瀯閫犱竴涓畻娉曪細 1.浠庝竴涓祦寮濮嬶紱 2.瀵繪壘涓涓弧瓚充笂榪板畾鐞嗙殑璺緞錛屽鏋滆繖鏍風殑璺緞涓嶅瓨鍦紝鍒欏仠姝紝嫻佹槸鏈澶х殑錛?br> 3.灝嗘祦榪囪繖鏉¤礬寰勭殑嫻侀噺澧炲姞鈻籌紝杞埌絎?琛屻?br> Ford-Fulkerson鏂規硶鏄寜鐓т笂榪板畾鐞嗘瀯閫狅紝瑙e喅鏈澶ф祦闂鐨勬湁鏁堟柟娉曪紝涓鑸噰鐢ㄦ繁鎼滅瓥鐣ワ紱鑰孍dmonds-Karp綆楁硶鏄疐ord-Fulkerson鏂規硶鐨勫箍鎼滅殑瀹炵幇錛涚浉瀵硅岃█錛屽悗鑰呯殑鏁堢巼紼嶅井楂樹竴浜涖?br> 涓嬮潰鏄疨OJ 1273鐨勪唬鐮侊紝閲囩敤鐨勬槸Edmonds-Karp綆楁硶銆?br>
1 #include < cstdio > 2 #include < queue > 3 const int INF = 0x0fffffff ; 4 const int SIZE = 202 ; 5 6 int bfs( int ( * mat)[SIZE], int start, int end, int * path) 7 { 8 int flow[SIZE]; // 瀛樺偍涓嬈FS閬嶅巻涔嬪悗嫻佺殑鍙敼榪涢噺錛?/span> 9 std::queue < int > q; 10 int i; 11 12 for (i = 0 ;i < SIZE; ++ i) 13 path[i]=- 1 ; 14 path[start]= 0 ,flow[start] = INF; 15 16 q.push(start);17 while ( ! q.empty()) 18 { 19 int top = q.front(); 20 q.pop();21 if (top == end) break ; 22 for (i = 1 ;i <= end; ++ i) 23 { 24 if (i != start && path[i] ==- 1 && mat[top][i]) 25 { 26 flow[i]= flow[top] < mat[top][i] ? flow[top] : mat[top][i]; 27 q.push(i);28 path[i]= top; 29 }30 }31 }32 if (path[end] ==- 1 ) return - 1 ; 33 return flow[end]; 34 35 36 } 37 int Edmonds_Karp( int ( * mat)[SIZE], int start, int end) 38 { 39 int maxflow = 0 ,step,cur,pre; 40 int path[SIZE]; /**/ /// /瀛樺偍褰撳墠宸茶闂繃鐨勮妭鐐圭殑澧炲箍璺緞錛?/span> 41 while ((step = bfs(mat,start,end,path)) != - 1 ) // 鎵句笉鍒板騫胯礬寰勬椂閫鍑?/span>42 { 43 maxflow += step; 44 cur= end; 45 while (cur != start) 46 { 47 pre= path[cur]; 48 mat[pre][cur] -= step; // 鏇存柊姝e悜杈圭殑瀹為檯瀹歸噺 49 mat[cur][pre] += step; // 娣誨姞鍙嶅悜杈?/span>50 cur = pre; 51 } 52 }53 return maxflow; 54 }55 56 int main() 57 { 58 int mat[SIZE][SIZE]; 59 int vecNum,edgeNum; 60 int i; 61 int a,b,c; 62 63 while (scanf( " %d%d " , & edgeNum, & vecNum) != EOF) 64 { 65 memset(mat,0 , sizeof (mat)); 66 for (i = 0 ;i < edgeNum; ++ i) 67 { 68 scanf(" %d%d%d " , & a, & b, & c); 69 mat[a][b]+= c; 70 }71 72 int re = Edmonds_Karp(mat, 1 ,vecNum); 73 printf(" %d\n " ,re); 74 75 }76 return 0 ; 77 }78
]]>
久久久久亚洲?V成人无码 |
久久人人爽人爽人人爽av |
国产精品成人久久久久久久 |
久久久久国产精品麻豆AR影院
|
久久综合给久久狠狠97色 |
一级a性色生活片久久无 |
人妻系列无码专区久久五月天 |
久久精品国产欧美日韩 |
久久精品国产99久久丝袜 |
久久精品国产一区二区三区不卡 |
色综合色天天久久婷婷基地 |
香港aa三级久久三级 |
亚洲午夜久久久精品影院 |
久久国产成人午夜aⅴ影院
|
久久婷婷是五月综合色狠狠 |
久久精品国产亚洲AV蜜臀色欲 |
香蕉久久夜色精品升级完成 |
69久久夜色精品国产69 |
国产精品成人99久久久久91gav |
久久中文字幕视频、最近更新 |
欧美一区二区久久精品 |
色婷婷综合久久久久中文一区二区 |
久久精品www人人爽人人 |
国产精品免费久久久久久久久 |
久久亚洲国产精品五月天婷 |
亚洲成色WWW久久网站 |
18岁日韩内射颜射午夜久久成人
|
日韩电影久久久被窝网 |
亚洲精品无码久久久影院相关影片 |
久久国产亚洲高清观看 |
久久久WWW免费人成精品 |
久久久久亚洲av成人网人人软件
|
尹人香蕉久久99天天拍 |
日韩人妻无码一区二区三区久久
|
精品久久人人爽天天玩人人妻 |
狠狠色丁香婷婷久久综合五月 |
亚洲第一极品精品无码久久 |
精品久久久久久国产牛牛app |
无码人妻精品一区二区三区久久 |
久久精品国产精品青草app |
亚洲国产精品综合久久一线 |