顽猴 PASCAL 解题报告

本文介绍了一道关于概率计算的问题,通过分析猴子从有聊变为无聊的期望时间,使用递推公式解决。涉及概率计算、期望值求解及递推思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顽猴

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

Description

从前有一只小考拉在家切题,切着切着他无聊了,于是他到森林里找小猴们玩。森林里总共有n + m只小猴,这些猴们跟他都是好朋友。他来到森林时,有n只小猴已经玩到无聊了,有m只还没有。每一个单位的时间,他都会随机找两只小猴,然后他们仨玩游戏。完了一单位时间后这两只小猴都会变得感到无聊。这时小考拉又会重新找小猴玩。
小猴们想知道,如果这个坏蛋不断找他们玩,那么,在期望下,多少单位的时间后他们会都变得很无聊。你能帮助他们么?

Input

输一行两个整数n和m。

Output

输出一行一个实数,为所有猴变得无聊的期望时间。保留三位小数。

Sample Input

样例输入甲
1 1

样例乙输入
2 1

样例输入丙
1 2

样例输入丁
4 7


Sample Output

样例输出甲
1.000

样例乙输出
1.5

样例输出丙
2.0

样例输出丁
13.831

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.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值