锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久午夜精品,91久久精品国产成人久久,久久久久久久久久久久久久 http://www.shnenglu.com/jaysoon/category/10355.htmlzh-cnMon, 13 Jun 2011 07:41:54 GMTMon, 13 Jun 2011 07:41:54 GMT60鏈闀塊掑瀛愬簭鍒?LIS)瑙f硶璇﹁堪http://www.shnenglu.com/jaysoon/articles/148382.htmljaysoonjaysoonThu, 09 Jun 2011 15:44:00 GMThttp://www.shnenglu.com/jaysoon/articles/148382.htmlhttp://www.shnenglu.com/jaysoon/comments/148382.htmlhttp://www.shnenglu.com/jaysoon/articles/148382.html#Feedback0http://www.shnenglu.com/jaysoon/comments/commentRss/148382.htmlhttp://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>


 




jaysoon 2011-06-09 23:44 鍙戣〃璇勮
]]>
POJ 2115 C Looooops瑙i鎶ュ憡http://www.shnenglu.com/jaysoon/articles/112245.htmljaysoonjaysoonSun, 11 Apr 2010 08:41:00 GMThttp://www.shnenglu.com/jaysoon/articles/112245.htmlhttp://www.shnenglu.com/jaysoon/comments/112245.htmlhttp://www.shnenglu.com/jaysoon/articles/112245.html#Feedback0http://www.shnenglu.com/jaysoon/comments/commentRss/112245.htmlhttp://www.shnenglu.com/jaysoon/services/trackbacks/112245.htmlhttp://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 

                





jaysoon 2010-04-11 16:41 鍙戣〃璇勮
]]>
POJ 3349 Snowflake Snow Snowflakes 瑙i鎶ュ憡http://www.shnenglu.com/jaysoon/articles/108745.htmljaysoonjaysoonTue, 02 Mar 2010 13:57:00 GMThttp://www.shnenglu.com/jaysoon/articles/108745.htmlhttp://www.shnenglu.com/jaysoon/comments/108745.htmlhttp://www.shnenglu.com/jaysoon/articles/108745.html#Feedback0http://www.shnenglu.com/jaysoon/comments/commentRss/108745.htmlhttp://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;
}




jaysoon 2010-03-02 21:57 鍙戣〃璇勮
]]>
POJ Scout YYF I 瑙i鎶ュ憡http://www.shnenglu.com/jaysoon/articles/96016.htmljaysoonjaysoonSat, 12 Sep 2009 13:36:00 GMThttp://www.shnenglu.com/jaysoon/articles/96016.htmlhttp://www.shnenglu.com/jaysoon/comments/96016.htmlhttp://www.shnenglu.com/jaysoon/articles/96016.html#Feedback0http://www.shnenglu.com/jaysoon/comments/commentRss/96016.htmlhttp://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;    
}


jaysoon 2009-09-12 21:36 鍙戣〃璇勮
]]>
鍥捐鏈澶х綉緇滄祦錛堜竴錛?POJ 1273 瑙i鎶ュ憡http://www.shnenglu.com/jaysoon/articles/81143.htmljaysoonjaysoonSun, 26 Apr 2009 11:18:00 GMThttp://www.shnenglu.com/jaysoon/articles/81143.htmlhttp://www.shnenglu.com/jaysoon/comments/81143.htmlhttp://www.shnenglu.com/jaysoon/articles/81143.html#Feedback0http://www.shnenglu.com/jaysoon/comments/commentRss/81143.htmlhttp://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)錛?Fij   <  Cij
                 
                (b)瀵?span style="FONT-FAMILY: Comic Sans MS">P涓殑姣忔潯鍙嶅悜杈?span style="FONT-FAMILY: Comic Sans MS">(i,j)錛?Fij    >  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>
 3const int INF=0x0fffffff;
 4const int SIZE=202;
 5
 6int 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]==-1return -1;
33    return flow[end];
34
35
36}

37int 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
56int 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

 


 



jaysoon 2009-04-26 19:18 鍙戣〃璇勮
]]>
久久久久亚洲?V成人无码| 久久人人爽人爽人人爽av| 国产精品成人久久久久久久| 久久久久国产精品麻豆AR影院 | 久久综合给久久狠狠97色| 一级a性色生活片久久无| 人妻系列无码专区久久五月天| 久久精品国产欧美日韩| 久久精品国产99久久丝袜| 久久精品国产一区二区三区不卡| 色综合色天天久久婷婷基地| 香港aa三级久久三级| 亚洲午夜久久久精品影院| 久久国产成人午夜aⅴ影院 | 久久婷婷是五月综合色狠狠| 久久精品国产亚洲AV蜜臀色欲| 香蕉久久夜色精品升级完成| 69久久夜色精品国产69| 国产精品成人99久久久久91gav| 久久中文字幕视频、最近更新| 欧美一区二区久久精品| 色婷婷综合久久久久中文一区二区| 久久精品www人人爽人人| 国产精品免费久久久久久久久| 久久亚洲国产精品五月天婷| 亚洲成色WWW久久网站| 18岁日韩内射颜射午夜久久成人 | 日韩电影久久久被窝网| 亚洲精品无码久久久影院相关影片| 久久国产亚洲高清观看| 久久久WWW免费人成精品| 久久久久亚洲av成人网人人软件 | 尹人香蕉久久99天天拍| 日韩人妻无码一区二区三区久久 | 精品久久人人爽天天玩人人妻| 狠狠色丁香婷婷久久综合五月| 亚洲第一极品精品无码久久| 精品久久久久久国产牛牛app| 无码人妻精品一区二区三区久久| 久久精品国产精品青草app| 亚洲国产精品综合久久一线|