也許更好的閱讀體驗
數學期望
符號
\(E=p*v\) 其中\(E\)為期望,\(v\)為權值,\(p\)為概率
含義
期望表示多個可能事件的合理分配情況 (本人自己的理解,不喜勿噴)
漢語期望意思是指人們對某樣東西的提前勾畫出的一種標准,達到了這個標准就是達到了期望值(百度百科)
數學期望也可認為是進行某件事能得到的平均結果,或者理想代價
期望值也許和每個得到值都 不相等
舉個例子
你去買彩票,每張彩票\(10\)元,中了獎可以得\(10000\)元,有\(30\%\)的概率中獎
我們來算一下買一張彩票的期望利潤
首先有\(30\%\)的概率中獎,根據定義期望得到\(30\%*10000\)元
又有\(70\%\)的概率不中獎,那么我們期望得到\(70\%*0\)元
我們每次買一張彩票\(100%\)會花掉\(10\)元
所以有\(E=30\%*10000+70\%*0-10=290\)
我們可認為每買一張彩票賺了\(290\)元
但是實際上無論怎樣,一張彩票都不會賺\(290\)元的。
轉移方程
幾種常見設轉移方程數組的方法
- 設\(f[i]\)表示的是由\(i\)狀態變成 最終 狀態的期望
- 按照題意直接設
- 把選擇的東西加入數組,如\(f[i][j]\)表示第\(i\)個物品選\(j\)個的期望或\(f[i][j]\)表示有\(i\)個\(A\)物品,\(j\)個\(B\)物品的期望
求轉移方程
應優先考慮進行操作后當前狀態會怎么樣,而不是如何變成當前狀態,即先考慮 逆向
如果逆向沒有思路,則考慮 正向
經典例題
注:沒有貼出代碼,有些題目現在找不到了 (至少博主沒有找到),也有博主自己想的題目 (很水),如博主有寫代碼則已放進標題的鏈接里,那些鏈接都是題解,不是原題鏈接
SP1026FavoriteDice
題目大意
一個\(n\)面的骰子,求期望擲幾次能使得每一面都被擲到
解決方法
設\(f[i]\)表示已經擲到過\(i\)面,還 期望擲多少次骰子使每一面都被擲到
現在擲一次骰子,有兩種情況
- 有\(\frac{i}{n}\)的概率擲到已經擲到過的面,此時仍然還要擲\(f[i]\)次骰子
- 有\(\frac{n-i}{n}\)的概率擲到沒擲到過的面,此后就擲到過\(i+1\)個面了,還需擲\(f[i+1]\)次骰子
需要注意的是,無論是擲到以上哪種情況,都需要擲一次骰子
所以有
\(f[i]=\frac{i}{n}f[i]+\frac{n-i}{n}f[i+1]+1\)
將其化簡
\(f[i]=f[i+1]+\frac{n}{n-i}\)
初值\(f[n]=0\),答案為\(f[0]\)
應逆向循環
塗格子/小孩和禮物
題目大意
有\(n\)個格子,每次等概率隨機給一個格子染色,問塗\(m\)次后期望有多少格子被染色了
解決方法
設\(f[i]\)表示塗\(i\)次后期望有多少格子被染色了
現在進行第\(i\)次染色,仍然有兩種情況
- 有\(\frac{f[i-1]}{n}\)的概率塗到已經塗過的格子
- 有\(\frac{n-f[i-1]}{n}\)的概率塗到沒塗過的格子
需要注意的是,無論是以上哪種,都已經有\(f[i-1]\)個格子被染色了
所以有
\(f[i]=\frac{f[i-1]}{n}·0+\frac{n-f[i-1]}{n}·1+f[i-1]\)
將其化簡
\(f[i]=\frac{n-f[i-1]}{n}+f[i-1]=\frac{n-1}{n}f[i-1]+1\)
此時該式就是一個等差數列套等比數列
於是我們可以求其通項公式,博主懶得求了寫下大致過程
令\(k=\frac{n-1}{n}\)
\(f_n=kf_{n-1}+1\)
\(f_n+\frac{1}{k-1}=kf_{n-1}+\frac{k}{k-1}\)
\(f_n+\frac{1}{k-1}=k(f_{n-1}+\frac{1}{k-1})\)
令\(g_n=f_n+\frac{1}{k-1}\)
則\(g_n=kg_{n-1}\)
怎么求\(g_n\)就不用說了吧
\(f_n=g_n-\frac{1}{k-1}\)
\(f_n\)也能求出來了
初值\(f[0]=0|f[1]=1\)答案為\(f[m]\)
應正向循環
簡單題
題目大意
桌面上有R張紅牌和B張黑牌,隨機打亂順序后放在桌面上,開始一張一張地翻牌,翻到紅牌得到1美元,黑牌則付出1美元。可以隨時停止翻牌,在最優策略下平均能得到多少錢。
解決方法
設\(f[i][j]\)表示有\(i\)張紅牌,\(j\)張黑牌的期望收益
考慮翻一張牌,還是有兩種情況
- 有\(\frac{i}{i+j}\)的概率翻到紅牌,此后就只有\(i-1\)張紅牌,\(j\)張黑牌
- 有\(\frac{j}{i+j}\)的概率翻到黑牌,此后就只有\(i\)張紅牌,\(j-1\)張黑牌
需要注意的是,不要忘了翻開的牌的貢獻
翻開一張牌后,該顏色牌數目就少了一張
所以有
\(f[i][j]=\frac{i}{i+j}(f[i-1][j]+1)+\frac{j}{i+j}(f[i][j-1]-1)\)
由於是最優策略,所以咱是不可能賠錢的
\(f[i][j]=max(0,\frac{i}{i+j}(f[i-1][j]+1)+\frac{j}{i+j}(f[i][j-1]-1))\)
初值\(f[0][1]=0,f[i][0]=i\),答案為\(f[R][B]\)
應正向循環
亞瑟王
題目大意
給出\(n\)個技能,每個技能按輸入順序有\(p[i]\)的概率釋放並造成\(d[i]\)的傷害。每輪游戲從前往后順序查看每個技能,若技能發動過則跳過,沒發動過則以\(p[i]\)的技能發動,即每個技能只能發動一次,若將一個技能發動,則進行下一輪游戲,沒有成功發動或被跳過就查看下一個技能,一輪游戲可能每個技能都不發動,問\(r\)輪游戲一共能造成的傷害期望。
解決方法
因為有一個順序查看的限制,沒有后效性的狀態是十分不好設的,因為不知道前面有幾個技能發動了,若一個技能前面的技能在某輪發動了,則該技能本輪一定不能發動,若前面有些技能發動過,則它們都會被跳過
為了解決這種情況,我們設狀態時試着強制限制技能發動(\(nr\)枚舉情況),當然,設的狀態仍然要滿足 所有 情況都考慮在內
設\(f[i][j]\)表示對前\(i\)個技能進行了\(j\)輪游戲發生的 概率
若前\(i\)個技能進行了\(j\)輪游戲
則有\(j\)輪不會考慮第\(i+1\)個技能
即有\(r-j\)輪游戲選擇了\(i\)之后的技能
此時考慮第\(i+1\)個技能的情況,分為兩種
- 有\(p[i+1]^{r-j}\)的概率\(i+1\)號技能從未發動
- 有\(1-p[i+1]^{r-j}\)的概率\(i+1\)號技能發動過
需要注意的是,此時 已經 確定前\(i\)個技能進行並 只進行 了\(j\)輪游戲,其概率應該也計算在內
所以有
- \(f[i+1][j]+=1-p[i+1]^{r-j}f[i][j]\)
- \(f[i+1][j+1]+=(1-p[i+1]^{r-j})f[i][j]\)
\(j+1\)要小於等於\(r\)
初值\(f[0][0]=1\),答案在中途計算
應正向循環
計算了概率,別忘了求的是期望傷害,在求概率的時候順便用概率乘以傷害
抽卡
題目大意
\(\mathcal{Morning\_Glory}\)最近迷上了抽卡,每次抽卡抽到\(6\)星卡的概率為\(p\)。抽卡活動進行\(n\)天,\(\mathcal{Morning\_Glory}\)非常喜歡抽卡,所以他不會錯過這個活動的每一天,即每天都一定會抽卡,在第\(i\)天必須要花\(c[i]\)游戲幣進行抽卡。求\(\mathcal{Morning\_Glory}\)在活動結束時抽得恰好\(k\)張\(6\)星卡的期望游戲幣花費。
解決方法
設\(f[i][j]\)表示在第\(i\)天結束后抽到\(j\)張\(6\)星卡的期望游戲幣花費
在第\(i\)天進行抽卡,有兩種情況
- 有\(p\)的概率抽到\(6\)星卡
- 有\(1-p\)的概率沒抽到\(6\)星卡
需要注意的是無論是否翻到,都要花費
所以有
\(f[i][j]=p·f[i-1][j-1]+(1-p)·f[i-1][j]+c[i]\)
初值\(f[0][0]=0\),答案為\(f[n][k]\)
應正向循環
收集郵票
POJ3682King Arthur's Birthday Celebration
這兩道題是一樣的類型,只需將概率與計算改一下即可,這里用收集郵票來做例題
題目大意
有\(n\)種郵票,每天等概率的買一張郵票,第\(i\)天購買要花費\(i\)元,求收集\(n\)種郵票的期望花費
解決方法
先設\(f[i]\)表示買到\(i\)種郵票后,離買到\(n\)種郵票的期望還差天數
和最上面那題一樣的處理方法
考慮當前買了\(i\)張郵票,再買一張郵票,有兩種情況
- 有\(\frac{i}{n}\)的概率買到重復的郵票,此時仍只買到\(i\)張郵票
- 有\(\frac{n-i}{n}\)的概率買到沒買過的郵票,此后就已買到\(i+1\)張郵票
需要注意的是,無論哪種情況,都過了一天
所以有
\(f[i]=\frac{i}{n}f[i]+\frac{n-i}{n}f[i+1]+1\)
將其化簡
\(f[i]=f[i+1]+\frac{n}{n-i}\)
初值\(f[n]=0\),答案為\(f[0]\)
應逆向循環
當然這只是期望天數,不是期望花費
設\(g[i]\)表示 擁有(不是買)\(i\)種郵票, 買到\(n\)種郵票的期望花費
考慮當前擁有了\(i\)張郵票,買一張郵票,有兩種情況
- 有\(\frac{i}{n}\)的概率買到重復的郵票,此時仍只擁有\(i\)種
- 有\(\frac{n-i}{n}\)的概率買到沒買過的郵票,此后就已擁有\(i+1\)張郵票
需要注意的是,無論哪種情況,都買了一張郵票
此時我們不知道每張郵票多少錢
但我們知道每張郵票和過了多少天有關
這次的注意寫在前面,我們是認為有了\(i\)張郵票后才開始,所以第一天郵票價格為\(1\)元
為什么這么設?
我們不知道也不好處理出前面買了多少張郵票,再買到一張郵票要多少錢
但是我們知道第一天肯定是只要\(1\)元的,答案為\(g[0]\),中間的過程不重要,只需推出最終答案
我們借助初始狀態的這條非常有用的性質於是就設出了這樣的\(g\)
這樣我們可以知道
- 若買到重復的郵票,我們知道,因為是設當前是第一天,所以原本希望買到的郵票的天數又往后推了一天,所以總價格要多\(f[i]\)元,還要加上自己的\(1\)元
- 若買到沒買過的郵票,同理,因為后面的\(g[i+1]\)也是從第\(1\)天開始考慮的,所以原本希望買到的郵票數也往后推了一天,所以價格要多\(f[i+1]\)元,還要加上自己的\(1\)元
所以有
- \(g[i]+=\frac{i}{n}(g[i]+f[i]+1)\)
- \(g[i]+=\frac{n-i}{n}(g[i+1]+f[i+1]+1)\)
總寫下來就是\(g[i]=\frac{i}{n}(g[i]+f[i]+1)+\frac{n-i}{n}(g[i+1]+f[i+1]+1)\)
將其化簡得到
\(g[i]=\frac{i}{n-i}f[i]+g[i+1]+f[i+1]+\frac{n}{n-i}\)
初值\(g[n]=0\),答案為\(g[0]\)
應逆向循環
如有哪里講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧
如能得到推薦博主就更開心了
您的鼓勵是博主的動力