XTU 1193 Lucky Wheel 概率递推

该博客探讨了XTU ACM竞赛中的一道问题——1193号题目的解决方案。问题涉及Alice在均匀概率的幸运大转盘上收集特定数量的一等奖和二等奖以获取Bob的大餐。博客内容包括问题描述、输入输出格式以及样例,并聚焦于计算达到目标奖项组合所需的转盘次数的期望值。

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

题目地址:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1193
题目描述

Alice在玩Bob的幸运大转盘,转盘如图。每次转完有8种结果,得到每种结果的概率是一样的。Bob说只要Alice能收集够x个一等奖和y二等奖就请他吃大餐。但是Alice每转一个要给Bob一块钱。现在Alice请你帮他计算一下他要转出x个一等奖和y个二等奖一共要转的次数的期望。

输入

输入包含不超过10000组数据。每组数据占一行,有两个整数x,y,(0 < x,y < 1000)。直到文件结束。

 

输出

输出一行,一个数表示Alice要转次数的期望,结果保留6位小数。

样例输入
0 1
1 0
1 1
2 6

样例输出
8.000000
8.000000
12.000000
48.625000

这儿是湘潭大学2014年4月12日月赛的一道题。
题目意思狠明确,要求求期望。

当时是最后30秒过的这题,所以印象很神。

思路大概就是你有x个二等奖y个一等奖要拿,那么
1)当x或者y有一个为0时,那么就转8次会x-1或y-1
2)当x和y均不为0时,那么转4次就会x-1或y-1

那么很明显,当a[x][y]是由a[x-1][y]和a[x][y-1]决定的
下面看代码:

#include <stdio.h>
#include <fstream>
#include <string.h>
#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include <map>
#define PI acos(-1.0)
#define M 1000005  //10^6
#define eps 1e-8
#define moo 1000000007
using namespace std;

double a[5000][5000];
int main()
{
    int i,j,d;
    a[0][0]=0;
    for(d=1;d<=2000;d++)    //用d标记层数,d=i+j,即总共需要拿多少奖。
    {
        for(i=0;i<=d&&i<=1000;i++)
        {
            if(d-i<=1000)
            {
                j=d-i;
                if(i==0||j==0)
                {
                    a[i][j]=i*8+j*8;  //情况一
                }
                else
                {
                    a[i][j]=4+a[i][j-1]/2+a[i-1][j]/2;  //因为一等奖二等奖概率相等,所以直接都乘50%,如果不等,那么分开乘就好。
                }
            }
        }
    }

    while(scanf("%d%d",&i,&j)!=EOF)
    {
        printf("%lf\n",a[i][j]);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值