猛地發現自己概率與期望這一部分還不怎麼會
(準確來說,是只會2n硬核列舉)
所以我決定好好學一學
全概率公式:公式表示若事件a1,a2,…,an構成乙個完備事件組且都有正概率,則對任意乙個事件b都有公式成立。
期望的線性性質:有限個隨機變數之和的數學期望等於每個隨機變數的數學期望之和。比如對於兩個隨機變數x,y,e(x+y)=ex+ey.
全期望知識:類似全概率公式,把所有情況不重複、不遺漏地分成若干類,每類計算數學期望,然後把這些數學期望按照每類的概率加權求和。
以上兩種方法,可以幫助我們利用dp來求概率/期望。
我覺得可能通過做題會更好理解一點,(畢竟剛剛開始學的話看上面的前置知識看得怪難受的),那就讓我們先做幾道例題吧!
洛谷 p4316 綠豆蛙的歸宿
給出乙個有向無環圖,起點為1終點為n,每條邊都有乙個長度,並且從起點出發能夠到達所有的點,所有的點也都能夠到達終點。綠豆蛙從起點出發,走向終點。 到達每乙個頂點時,如果有k條離開該點的道路,綠豆蛙可以選擇任意一條道路離開該點,並且走向每條路的概率為 1/k 。 現在綠豆蛙想知道,從起點走到終點的所經過的路徑總長度期望是多少?
對於20%的資料 n<=100
對於40%的資料 n<=1000
對於60%的資料 n<=10000
對於100%的資料 n<=100000,m<=2*n
如果按我以前對概率與期望的理解,我大概會這麼做:硬核模擬,然後把每次的長度與它的概率乘起來。(這樣的複雜度劣得驚人)
但現在不一樣了!我們可以用dp來完成這道題目。
我們設f[i]為從i到n點的期望長度,容易想到f[n]=0,而f[1]則是我們的答案。
我們的狀態轉移方程就是:f[v]=(f[u]+w)/de[v]
這樣我們就可以逆推求值了。
你可能會想到乙個問題:為什麼我們要逆推,而不是直接順推呢?
我試了一下,發現順推是錯的。
為什麼呢?
我們首先這樣從正面考慮:
每次我們走過的一段路徑,對答案的貢獻就是走這條路的概率乘上這條路的長度。
那麼走過一段路徑的概率是多少呢?就是這條路徑上走每一條邊的概率之積。
也就是說,如果我們走了一條邊,那麼它的概率會對走過這條邊的以後的路徑都產生乙個影響。
因此我們逆推的時候,只用乘上走這條邊的概率就可以了(可以理解為記上了它對以後路徑概率的影響)
但是如果是順推的話,我乘上走這條邊的概率,那麼其實沒有對走過以後的路徑的概率產生影響,而是對我們走過這條邊以前的路徑概率產生了影響。
(如果這個實在不能理解的話也可以自己手玩一下)
那麼我們只需在拓撲排序的過程中順便完成轉移就可以了,時間複雜度o(n+m)。
1 #include 2 #include 3 #include 4view code#define gc cl==cr&&(cr=(cl=bu)+fread(bu,1,1000000,stdin),cl==cr)?eof:*cl++
5#define gs (ch'9')
6using
namespace
std;
7const
int n=1e5+111,m=2e5+111;8
intn,m,tot;
9int hd[n],in
[n],de[n];
10double
f[n];
11struct
edge e[m];
14 queueq;
15char bu[1000011],*cr,*cl;
16void r(int &x)
1720
while(!gs ) x=x*10+ch-'
0',ch=gc;
21 x*=f;22}
23void add(int u,int v,int
w)24
;26 hd[u]=tot;27}
28int
main()
2938
q.push(n);
39while(!q.empty())
4049
}50 printf("
%0.2lf
",f[1
]);51
return0;
52 }
(未完待續...)
概率與期望
p a n m e a p a v a p b v b 已知有乙個家庭共有兩個孩子,其中一名是女孩,求另外一名也是女孩的概率 按照直觀感受,另一名也是女孩的概率不應受其他條件影響,無論如何,都應該是二分之一。但事實上,另一名也是女孩的概率只有1 3 對於本題而言,這個家庭只有這四種情況 1.第乙個孩...
概率與期望
p s 是獲得s中的元素的概率 e s 是獲得s中的元素的期望步數 e s 1 p s min max容斥 記min s 為出現s中任意乙個元素 max s 為出現s中全部元素 p min s i s p i e min s 1 p min s 則e min s 為出現s中任意乙個元素的期望步數 e...
概率與期望 期望雜談
本文所涉及的概率與期望問題,僅建立在離散型隨機變數之上。連續性期望的計算要用到微積分,那是我不會的東西。說白了,數學期望其實就是隨機變數結果的平均值。乙個離散型變數的數學期望為該變數內每個取值的概率與其取值的乘積的總和。e x sum a p a 類似與於加權平均。1.設c是乙個常數,那麼有 e c...