題鏈:
題解.1:
期望dp,(平方的期望不等於期望的平方。。。)
在這個題上坑了好久,也算是對期望的理解又深了一些。
很好的題解:
再闡述一下平方的期望是在什麼情況下可以遞推的:對於乙個隨機變數x,我們知道其每個取值的概率,
那麼我們容易由定義得出這個隨機變數的期望e(x)=p1*x1+p2*x2+...,
以及這個隨機變數的平方的期望e(x²)=p1*x1²+p2*x2²+...。
現在由於種種原因,假設我們需要求出在這個隨機變數的每個取值都加1但是概率不變的情況下的新的平方的期望e'(x²)=p1*(x1+1)²+p2*(x2+1)²+...,
(注意,只是權值改變,對應概率未變)
那麼這個時候就可以用平方的期望的遞推式子了:e'(x²)=e(x²)+2*e(x)+1
反觀這類題目的dp轉移往往是分為當前狀態成功與否兩種情況,
而當我們確定了某種情況後,接下來就需要計算當前+後面的東西的總期望,再乘上這種情況的概率。
因為已確定了是成功還是失敗,所以當前狀態對期望的貢獻只是在隨機變數的取值上,而沒有影響到其概率分布,所以才可以直接使用平方的期望的遞推式子。
**.1:
#include#define maxn 10005using namespace std;
double g[maxn],f[maxn];
int n;
int main()
cout<題解.2:
求期望。。。
正向列舉已經收集了i個,並計算收集第i個時的相關資訊與貢獻,
令a[i]表示收集了i個時期望購買了a次。
那麼a[i+1]=a[i]+n/(n-i) (加上收集第i+1個時期望的購買次數)
然後要求收集第i+1個時期望的花費,
首先之前已經期望購買了a次,那麼我們考慮:
首先一定要先買一次,**為a+1
如果沒買到(概率為i/n),再買一次,**為a+2
如果還沒買到(概率為(i/n)²),在買一次,**為a+3
....(子子孫孫,無窮匱也。。。)
那麼可以列出期望花費的式子:令p=i/n
a=(a+1)+(a+2)*p+(a+3)*p²+(a+4)*p³+.... [1]式
然後我們要求a的值,用錯位相減法的得到,即:
a*p= (a+1)*p+(a+2)*p²+(a+3)*p³+.... [2]式
[1]式-[2]式:
(1-p)*a=a+1+p+p²+p³+...,是乙個無窮項的等比數列
=a+1/(1-p)
所以得到a=(a+1/(1-p))/(1-p)
然後把a加進答案ans即可,(期望的線性可加性嘛,a即表示收集第i+1個所期望的花費)
**.2:
#include#define maxn 100005
using namespace std;
double p,a,ans;
int n;
int main()
cout
}
1426 收集郵票
time limit 1 sec memory limit 162 mb submit 334 solved 269 submit status discuss 有n種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且買到的郵票究竟是n種郵票中的哪一種是等...
概率DP 收集郵票
問題 h 收集郵票 時間限制 1 sec 記憶體限制 162 mb 題目描述 有n種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且買到的郵票究竟是n種郵票中的哪一種是等概率的,概率均為1 n。但是由於凡凡也很喜歡郵票,所以皮皮購買第k張郵票需要支付k元...
BZOJ 1426 收集郵票
題目 1426 收集郵票 time limit 1 sec memory limit 162 mb description 有n種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且買到的郵票究竟是n種郵票中的哪一種是等概率的,概率均為1 n。但是由於凡凡也...