CF453A Little Pony and Expected Maximum
CF453A Little Pony and Expected Maximum
題目描述
Twilight Sparkle was playing Ludo with her friends Rainbow Dash, Apple Jack and Flutter Shy. But she kept losing. Having returned to the castle, Twilight Sparkle became interested in the dice that were used in the game.
The dice has mm faces: the first face of the dice contains a dot, the second one contains two dots, and so on, the mm
輸入格式
A single line contains two integers mm
輸出格式
Output a single real number corresponding to the expected maximum. The answer will be considered correct if its relative or absolute error doesn't exceed 10^{-4}10−4 .
題意翻譯
暮暮剛剛在和她的朋友——AJ(蘋果傑克)、FS(小蝶)、RD(雲寶黛西)玩Ludo遊戲。但是她馬品沒攢夠總是輸。回到城堡過後,她對遊戲用的骰子產生了興趣。
題目描述
這個骰子有M面:骰子的第一面有一個點,第二面有兩個點,以此類推,第m面含有M點。暮暮確信的是,當擲骰子時,每一面都有1/m的可能性出現,並且每次投擲的概率都是都是獨立的。請你幫助她計算擲N次骰子後每次得到的點數中最大值的期望。
輸入輸出格式
輸入格式:
一行兩個整數 m 和 n (1 ≤ m, n ≤ 10^5).
輸出格式:
輸出一行一個實數,與答案誤差不大於10^-4
題解:
對於這種數學期望類的題目,思路往兩個方向去:第一種思考可不可以遞推地DP轉移,也就是我們常說的期望DP。第二種就是直接從期望的定義進行探究,用數學方法推導一個公式然後求解。
這道題首先想到期望DP,但是沒有設定出一個比較好的狀態來進行轉移。
那麼直接考慮可不可以推導。
期望的定義:概率乘權值。
那麼現在權值已知,我們只需要找每個權值的概率即可。
首先總事件數為\(m^n\),很好理解。
假設扔了n次之後,扔到的最大值是k。那麼在這\(m^n\)種情況中,符合要求的情況就是\(k^n-(k-1)^n\)種。
為什麼呢?
扔到1-k的情況是\(k^n\),扔到1-(k-1)的情況是\((k-1)^n\),容斥可得。
所以期望就是:
\[\sum_{i=1}^m\frac{i\times (i^n-(i-1)^n)}{m^n} \]化簡可得程式碼:
注意,不要用long double
#include<cstdio>
#include<cmath>
using namespace std;
double n,m,ans;
int main()
{
scanf("%lf%lf",&m,&n);
for(double i=1;i<=m;i++)
ans+=i*(pow(i/m,n)-pow((i-1)/m,n));
printf("%.12lf\n",ans);
return 0;
}