概率dp的邊界處理 POJ 2096

2022-03-03 14:02:35 字數 989 閱讀 2731

說的是有n個bug,和s個系統。現在乙個人一天能發現乙個bug,它可能是任何乙個系統中的,也可能會發現已經發現過的bug。

問,他發現全部n個bug,並且s個系統中都出現bug的天數的期望。

**是借用kuangbin大神的:

1 #include2 #include3 #include4 #include

5using

namespace

std;

6const

int maxn=1010;7

double

dp[maxn][maxn];89

intmain()

1021 printf("

%.4lf\n

",dp[0][0]);//

poj上g++要改成%.4f22}

23return0;

24 }

關於轉移方程,有什麼不懂的可以移步   

沒什麼好說的,我這只弱雞都能看懂。。。

但我覺得需要注意的地方是**的第18行和19行,對邊界的處理,可以說沒有一點多餘啊。。。

注意到dp過程是從 右下角(dp[n][s]) 開始的,決定當前位置的值是它右、下、以及右下位置的值

那麼左邊、上邊的邊界自然不用考慮,可能出現溢位的位置就剩下右邊,下邊,以及右下角。

我們注意到程式僅在第18行處理了右下角,是不是kuangbin大神漏掉了右邊和下邊的處理呢?

不,事實上右邊和下邊的處理在計算概率的時候就已經完成了!

就拿下邊來說,注意到,當且僅當 i==n 時,訪問 dp[i+1][j] 時會在下邊越界。

但是,注意到與這一項相乘的概率恰好包括了 (n-i) 這一因子。

因此,越界訪問得到的資料( dp[n+1][j] )並不會影響 dp[i][j] 的計算結果。

可能很簡單。。。

但是對我這樣的弱雞來說,我覺得挺神奇的,求大犇們勿噴。。。

PO狀態為「處理中」的處理方法

ebs中經常會出現po提交審批後狀態為 處理中 的情況,此時po建立人無法開啟,審批人也無法開啟,工作流等檢視也無異常,可以使用一下sql處理再進行審批 set serveroutput on size 100000 declare cursor maxseq id number,subtype p...

關於概率dp的HINT

摘自shadowice1984的blog 這裡想講乙個關於概率題的小技巧,就是關於如何求某個事件發生的概率pp,事實上大家也清楚,除了一些特殊的近似演算法之外,我們在程式中計算概率的方法無非就是加減乘除四則運算而已 而減法和除法又是加法和乘法的逆。而在概率角度上,應該各位都是知道乘法原理和加法原理的...

易碎的鳥蛋 概率DP

時間限制 1 sec 記憶體限制 128 mb 提交 396 解決 80 提交 狀態 討論版 你們知道嗎?西電的跳樓塔上面有乙個鳥巢。某sxbk的教授對這個鳥巢很感興趣。經過仔細觀察,他發現鳥巢中有若干枚蛋。於是他想利用這些蛋做乙個試驗。測試一下蛋的堅固程度。這些蛋應該是具有相同的堅硬度。存在乙個非...