1. 程式人生 > >【總結】概率與期望

【總結】概率與期望

前言

作為NOIP級的知識點,概率與期望算是比較困難的型別了。
但其實也不是無法解決的難題。

本文主要通過作者本人的刷題經歷,對概率期望類題目進行總結。

概率

51Nod1639綁鞋帶:

有n根鞋帶混在一起,每根鞋帶有兩個鞋帶頭。現在重複n次以下操作:隨機抽出兩個鞋帶頭,把它們綁在一起。求最終只形成一個環的概率?

依次考慮每一步操作,現在已經選出來了一個頭,它必須和非它所在的鏈的另一個頭綁在一起,才能得到合法方案。顯然所有的鞋帶頭中,有且僅有一個和它在一條鏈上,所以成功的概率就是1,由於每次操作,會消去兩個鞋帶頭,所以當前的鞋帶頭數=總的鞋帶頭數-操作次數*2。題目要求不允許失敗,所以答案就是每一次成功概率的乘積。

在這道題目中,我們在每一步操作時,都計算出了當前的情況總數,並將其轉化為概率的形式。

Uva1636 Headshot

題意很簡單,有一把左輪手槍(左輪都不知道的面壁去),已知子彈的分佈,現在開了一槍,是空槍,現在有兩種方案:1,直接再開一槍,2、隨機從某個位置再開一槍。求使得下一發子彈也是空槍
這道題算是比較簡單的條件概率:已知第一發沒有子彈。解法很簡單,隨機開一槍概率為,再開一槍概率

Uva11181 Probability|Given

這道題只是運用列舉法求概率的典型,價值不大。

Uva557 Burger

題意:有A、B兩種漢堡各n個,2n個人依次拿,若當前兩種漢堡均有剩餘,隨機拿走某種的一個,否則只能拿走剩餘的。現在求最後兩個人拿到不同的漢堡的概率。

其實就是計算拿前2n-2個,到最後每種都還剩一個的概率。就是說,前2n-2個人中,有n-1個拿的是A種漢堡,剩餘的拿的是B種漢堡,那麼這樣合法的方案就是C(2n2,n1),這時,再來看每一步能拿到我們計劃中的狀態的概率,由於對於所有合法方案,最後兩類都有剩餘,也就是說,之前每個人都有選擇,那麼每一個人拿到我們想要他拿到的概率即為12,一共拿2n2步,所以最終答案就是C(

2n2,n1)22n2

Uva11895 Honorary Tickets

題意:有k個大箱子,每個盒子裡有bi個盒子,其中有si個盒子中有一個糖果。
現在每個人依次操作:選擇一個能拿到糖果概率最大的箱子,從中隨機開啟一個盒子。現在求第k個人能拿到糖果的概率。

這道題可能乍一看覺得很簡單,你可能會誤以為對每個人而言,狀態都是一樣的。其實不然,由於每個人之前的人數不同,所以會對他的選擇造成影響。比如下面這個例子:
現在又2個箱子,第一個箱子有3個盒子,2顆糖。第二個箱子有2個盒子,1顆糖。第一個人肯定選擇第一個箱子,他有23的概率拿走一顆糖,還有13的概率不能拿走糖。那麼下一次在這個箱子中能拿到糖的概率就變為了:23×13+13×23=49。這時第二個人就只能選第二個箱子了。

其實這個問題還是很簡單。
首先,用優先佇列儲存每個箱子的資訊,我們需要儲存:這個箱子能拿到糖果的概率,這個箱子的盒子數。排列時按照概率從大到小,模擬每個人取糖果的過程,顯然他只會從隊首取,那麼只需要更新一下隊首的概率即可。

如何更新這個概率,我是推了一波公式推出來的結果,但lx大佬告訴了我一個更簡單的推導方式:假設現在又m個盒子,能拿到糖的概率為p,由於每個盒子最多隻有一個,所以現在有糖果的盒子期望數是m*p,那麼有p的概率拿走一個,1-p的概率不拿走,所以更新後的答案就是pmp1m+(1p)mpm=(m1)pm

lx大佬的方法巧妙地利用的期望的一些性質,使得推導過程變得極為簡潔,所以推導概率時,巧用期望也是一種極好的方式。

Hdu4326 Game

題意:有n個人排成一列,每次前4個人玩一次遊戲,每個人等概率獲勝,獲勝者留在隊首,其餘人按照原順序排列到隊位。當一個人連續勝利m次後,就成為贏家。現在求拍第k個位置的人獲勝的概率。
nm10

這題乍一看很複雜,因為失敗者會到隊尾去,也就是說有可能繼續參加遊戲,所以整個遊戲過程就變得極為複雜。

但其實不需考慮這麼多。由於題目要求第k個人獲勝的概率,那麼我們完全可以忽略其他無關人士的影響。有誰會對當前這個人的勝率造成影響呢?顯然只有隊首的那個人,因為最終獲勝的人肯定在隊首。所以我們可以藉助DP解決。
DP[i][j]表示隊首的人獲勝了i次,此時排第j號位置的人的勝率。轉移方程很簡單,只不過會形成環,所以要用高消解決。前4個人的轉移稍微複雜一點,其他人都是一樣的。這裡就不再贅述。

這道題的精髓在於,不需要考慮無關因素,就是說不需要考慮到底初始編號為幾的人贏了,編號為幾的人輸了。只需要關心當前隊首的人即可。並且藉助了DP來解決問題,同時用了高消,強烈建議實現這道題。

期望

期望題本質上和概率差不多,所以就少說一點題目了。

One Person Game

題意:有三個骰子,每個骰子有ki個面,當每個骰子的點數分別為a、b、c時,回到原點,否則前進點數之和的步數。求到達目標的期望擲骰子次數。

轉移方程很好寫