數學期望題目

2021-08-10 12:09:42 字數 3335 閱讀 1389

bzoj4318

time limit: 2 sec  

memory limit: 128 mb

osu 是一款群眾喜聞樂見的休閒軟體。 

我們可以把osu的規則簡化與改編成以下的樣子: 

一共有n次操作,每次操作只有成功與失敗之分,成功對應1,失敗對應0,n次操作對應為1個長度為n的01串。在這個串中連續的 x個1可以貢獻x^3 的分數,這x個1不能被其他連續的1所包含(也就是極長的一串1,具體見樣例解釋) 

現在給出n,以及每個操作的成功率,請你輸出期望分數,輸出四捨五入後保留1位小數。 

第一行有乙個正整數n,表示操作個數。接下去n行每行有乙個[0,1]之間的實數,表示每個操作的成功率。 

只有乙個實數,表示答案。答案四捨五入後保留1位小數。  3

0.5

0.5

0.5

6.0【樣例說明】 

000分數為0,001分數為1,010分數為1,100分數為1,101分數為2,110分數為8,011分數為8,111分數為27,總和為48,期望為48/8=6.0 

n<=100000

定義dp[i]表示當前到第i個位置,得分的期望。

定義隨機變數x表示前i-1個位置(到第i-1處)的連續的1的長度(此處x理解為很多個按一定頻率分布的確定值->乙個長度)

定義l[i]表示到第i個位置,【連續1長度】的期望

那麼有l[i] = pi * (x + 1)這裡的x是很多個值,所以它們按頻率計算後的值就是l[i-1]

我們注意(a的期望 )*(b的期望) 不一定等於(a*b的期望)

所以平方關係需要另外處理。

定義l2[i]表示到第i個位置,【連續1長度平方】的期望

那麼l2[i] = pi * (x + 1)^2 這裡的x仍然是很多個值(很多個長度)

=> l2[i] = pi * (x^2 + 2*x + 1) x^2中,x是很多個值,x^2表示的是位置i-1的連續1長度平方,根據頻率計算後就應該是l2[i-1]

所以l2[i] = pi * (l2[i-1]+2*l[i-1]+1)

定義l3[i]表示到第i個位置,【連續1長度立方】的期望

那麼l3[i] = pi * (x + 1)^3 這裡x含義同上

=>l3[i] = pi * (x^3 + 3 * x^2 + 3 * x + 1) => pi * (l3[i-1]+3*l2[i-1]+3*l[i-1]+1)

對於當前位置i,dp[i] = dp[i-1] + (1- pi)*l3[i-1] 表示當前位置i,前面i-1位置處的連續1串有(1-pi)的可能會斷掉(i處為0)。

最後全部完成後一定會斷掉,所以dp[n] += l3[n]

code:

#include#include#include#include#includeusing namespace std;

const int max = 100000;

int n;

double l[max + 5], l2[max + 5], l3[max + 5];

int main()

rt += l3[n];

printf("%.1lf\n", rt);

return 0;

}

bzoj1462

time limit: 1 sec  

memory limit: 162 mb

有n種不同的郵票,皮皮想收集所有種類的郵票。唯一的收集方法是到同學凡凡那裡購買,每次只能買一張,並且買到的郵票究竟是n種郵票中的哪一種是等概率的,概率均為1/n。但是由於凡凡也很喜歡郵票,所以皮皮購買第k張郵票需要支付k元錢。 現在皮皮手中沒有郵票,皮皮想知道自己得到所有種類的郵票需要花費的錢數目的期望。

一行,乙個數字n n<=10000

要付出多少錢. 保留二位小數

321.25

定義f[i]表示手上已經有i種不同的郵票,還需要買f[i]張才可能得到n種不同的郵票

考慮已經有i種郵票,現在要買到一種與前i種郵票不相同郵票需要買多少張

買一次就買到:(n-i)/n*1

買兩次:i/n*(n-i)/n*2

買3次:(i/n)^2*(n-i)/n*3

(n-i)/n * (1 + i/n*2 + (i/n)^2*3 + ...... )

趨近於無窮,求和後為(n-i)/n*(n/(n-i))^2=n/(n-i)

所以f[i] = f[i+1]+n/(n-i)

定義g[i]表示手上已經買到i種不同的郵票,還需要花g[i]元才可能買到n種不同郵票

有兩種可能,第一是i/n的概率買到重複的,計算時幫後面的f[i]次都墊付1元:i/n*(g[i]+f[i]+1)

第二是(n-i)/n的概率買到新的,計算時仍然墊付:(n-i)/n*(g[i+1]+f[i+1]+1)

g[i] = i/n*(g[i]+f[i]+1)+(n-i)/n*(g[i+1]+f[i+1]+1)

code:

#include#include#include#include#includeusing namespace std;

const int max = 100000;

int n;

double f[max + 5], g[max + 5];

int main()

time limit: 10 sec  

memory limit: 64 mb

桌面上有r張紅牌和b張黑牌,隨機打亂順序後放在桌面上,開始一張一張地翻牌,翻到紅牌得到1美元,黑牌則付出1美元。可以隨時停止翻牌,在最優策略下平均能得到多少錢。

一行輸入兩個數r,b,其值在0到5000之間

在最優策略下平均能得到多少錢。

5 14.166666

注意定義期望dp時定義應該是乙個未知的值,是乙個期望的值,而不是確定的值,所以本題不能定義為f[i][j]手上拿到i張紅,j張黑得到的錢數,

而應該是f[i][j]手上拿到i張紅j張黑,到拿到所有的牌,還期望得到多少錢

所以f[i][j] = (r-i)/(r+b-i-j)*(f[i+1][j]+1)+(b-j)/(r+b-i-j)*(f[i][j+1]-1)

code:

#include#include#include#include#includeusing namespace std;

int r, b;

double f[2][5005];

int main()

printf("%.6f\n",(int)(f[tg^1][0]*1000000)/1000000.0);

return 0;}/*

5 14.166666

*/

數學期望(360)

題目描述 小明同學最近學習了概率論,他了解到數學期望的定義 設x為乙個隨機變數,x可以取n種不同的取值x1,x2,x3,xn。取x1的概率為p1,取x2的概率為p2,以此類推。定義隨機變數x的數學期望為 e x x1 p1 x2 p2 xn pn。小明回到家中,他想程式設計計算數學期望,你能幫助他麼...

機器學習 數學期望

在概率論和統計學中,數學期望 mean 或均值,亦簡稱期望 是試驗中每次可能結果的概率乘以其結果的總和 嚴格的定義如下 2.數學期望的含義 這個很重要,我們一定要明白概念的含義,聯絡到實際的應用場景中表達的真正意義,數學期望的存在是為了表達什麼?答 反映隨機變數平均取值的大小 談談我對於這兩個概念的...

CodeForces 453A(數學期望)

題目大意給你乙個n面的骰子,投擲m次,問投得最大面的數學期望。數學期望的由來 數學期望,早在17世紀,有乙個賭徒向法國著名數學家 帕斯卡挑戰,給他出了一道題目 甲乙兩個人賭博,他們兩人獲勝的機率相等,比賽規則是先勝三局者為贏家,贏家可以獲得100法郎的獎勵。當比賽進行到第三局的時候,甲勝了兩局,乙勝...