有乙個電梯,有 n 個人要進電梯。
對於每一秒,排在最前面的人有 p 的機率會進電梯(不會再出來),否則不進,別的人都不進。
問你 t 秒後,在電梯上的人的期望數量。
這道題我們先設 fi,
jf_
fi,j
為在第 i
ii 秒之後有 j
jj 個人在電梯上的概率。
那首先初始化很顯然,f0,
0=
1f_=1
f0,0=
1。那接著就是轉移。
首先,對於普通的,我們從 fi,
jf_
fi,j
可以這樣轉移:fi+
1,j+
1=fi
+1,j
+1+f
i,j×
pf_=f_+f_\times p
fi+1,j
+1=
fi+1
,j+1
+fi
,j×
p 和 fi+
1,j=
fi+1
,j+f
i,j×
(1.0−p
)f_=f+f_\times (1.0-p)
fi+1,j
=fi
+1,j
+fi,
j×(
1.0−
p)。(就是對於新的一秒,最前面的人走上了電梯,或者沒有走上電梯)
那如果已經沒有人在等著上電梯了呢?(或者說所有人都上了電梯)
那因為上了電梯就不會下來(這話說的有點恐怖1
),那所有人還是在電梯上,也不會有人進來。(因為你總不能說多了個人吧,佇列裡多了乙個人2
)所以,對於 fi,
nf_
fi,n
,我們可以讓 fi+
1,n=
fi+1
,n+f
i,
nf_=f_+f_
fi+1,n
=fi
+1,n
+fi
,n。
但是我們這個現在求的是期望,不是概率。
那我們知道期望就是可能結果的概率乘以其結果的總和,那我們就直接列舉 ft,
if_
ft,i
,然後 ans
=ans
+ft,
i∗
ians=ans+f_*i
ans=an
s+ft
,i∗
i。那 a ns
ansan
s 就是我們要的答案了。
#include
#include
using
namespace std;
int n, t;
double p, f[
2001][
2001
], ans;
intmain()
f[i +1]
[n]+
= f[i]
[n];
//如果所有的人都已近電梯,就不貴出現進電梯的情況
}for
(int i =
1; i <= n; i++
)//然後最後根據概率算出期望
ans +
= f[t]
[i]* i;
printf
("%lf"
, ans)
;return0;
}
柯南第20集:電梯殺人事件 ↩︎
another,懂? ↩︎
期望 乘坐電梯(金牌導航 期望 2)
有n個人,對於沒乙個單位時間有p的概率最前面的1個人進電梯,有 1 p 的概率不進,問你t個單位時間後,電梯中的期望人數 1 0.50 1 樣例輸出 1 0.5樣例輸入 2 1 0.50 4 樣例輸出 2 0.9375 樣例輸入 3 4 0.20 2 樣例輸出 3 0.41 n t 2000 1 l...
乘坐電梯的問題
題目內容 說明 1 假設最開始電梯在0層,n個人從第0層進電梯,中間不再增添新乘客 2 n個人都到達各自的樓層後,電梯需要回到0層 3 到同一樓層的人不管有幾人,電梯開門的時間總共只需要5秒.輸入格式 輸入資料首先包含乙個整數n 0 n 10 表示電梯內的人數 然後是n個人要到的樓層si 1 si ...
乘坐電梯注意事項
而針對眾多的疑問,記者也聯絡到了當事人周先生,他向記者講述了整件事情發生的經過。9月24號中午1點多,周先生把岳父從老家接到了岑鞏縣城。那天我接爸爸下來過中秋節,一起吃飯,然後爸爸就說要去哪個親戚家看親戚,讓我一起去看一下,正好那裡也是我上班的地方。周先生說。周先生是這個小區物業公司的電工,平時也做...