頑猴 PASCAL 解題報告

頑猴

Time Limit:1000MS  Memory Limit:524288K
Total Submit:2 Accepted:2

Description

從前有一隻小考拉在家切題,切着切着他無聊了,於是他到森林裏找小猴們玩。森林裏總共有n + m只小猴,這些猴們跟他都是好朋友。他來到森林時,有n只小猴已經玩到無聊了,有m只還沒有。每一個單位的時間,他都會隨機找兩隻小猴,然後他們仨玩遊戲。完了一單位時間後這兩隻小猴都會變得感到無聊。這時小考拉又會重新找小猴玩。
小猴們想知道,如果這個壞蛋不斷找他們玩,那麼,在期望下,多少單位的時間後他們會都變得很無聊。你能幫助他們麼?

Input

輸一行兩個整數n和m。

Output

輸出一行一個實數,爲所有猴變得無聊的期望時間。保留三位小數。

Sample Input


Sample Output


Hint

1 ≤ n, m ≤ 50

Source

 

一道概率的題。

這種題挺少見的,上次碰到是在特長生比賽的時候,然後沒有人做出來。。

 

首先,題目給的樣例我只能看懂第一個。

對於樣例2,我一開始想:有可能永遠取不到那個有聊的猴子,那時間不就是正無窮了嗎?

後來老師說要用到極限的思想去理解。。

 

然後看了正解:

對於有m個猴子有聊的情況,

令f[i]表示有i只有聊,n+m-i只無聊。

令 p0 表示 隨機取出 兩隻無聊          猴子的概率

   p1              一隻無聊,一隻有聊

   p2              兩隻有聊

則:f[i]:=f[i-1]*p1+f[i-2]*p2+f[i]*p0+1

所以:f[i]:=(f[i-1]*p1+f[i-2]*p2+1)/(1-p0)

最後輸出f[m]

 

應該這樣想:

對於有i個猴子有聊的情況:

這種情況有三種來源:

1,i-1個猴子有聊,被抽出一隻無聊,一隻有聊。概率:p1。

2,i-2個猴子有聊,被抽出兩隻有聊。         概率:p2。

3,i  個猴子有聊,被抽出兩隻無聊。         概率:p0。

這樣,就能遞推出結果了。

 

var
 n,m,i,j,tot,pyy,pyw,pww:longint;
 f:array[-1..100]of real;
begin
 read(n,m);
 tot:=0;
 for j:=2 to n+m do
  tot:=tot+j-1;

 for i:=1 to m do
  begin
   pyy:=0;
   for j:=2 to i do
    pyy:=pyy+j-1;
   pww:=0;
   for j:=2 to (m+n-i) do
    pww:=pww+j-1;
   pyw:=tot-pww-pyy;
   f[i]:=(f[i-1]*pyw/tot+f[i-2]*pyy/tot+1)/(1-pww/tot);
  end;
 writeln(f[m]:0:3);
end.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章