码迷,mamicode.com
首页 > 其他好文 > 详细

uva 557 Burger

时间:2017-06-04 18:44:20      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:font   alt   images   表示   printf   style   amp   using   决定   

https://vjudge.net/problem/UVA-557

 

题意:

n个人,n/2个牛肉煲,n/2个鸡肉堡

每次抛硬币,根据正反决定每个人吃什么汉堡

如果某一个汉堡被选完了,就不抛了

问最后两个人吃到同种汉堡的概率是多少

 

有抛硬币,想办法去掉抛硬币的干扰

要么都抛,要么都不抛

后者不大可能,考虑前者

如果前n-2个人都抛硬币,那么前n-2个人中,

有(n-2)/2 个人吃到牛肉煲,剩下的吃到鸡肉堡

所以,正难则反

计算最后两个人吃到不同种汉堡的概率

a[n]表示有n个人,最后两个人吃到不同汉堡的概率

a[n]=C(n-2,n/2-1)* (1/2)^(n-2)

C(n-2,n/2-1) 是所有可能情况有多少种

(1/2)^(n-2)n-2个人都要抛硬币,概率1/2

n很大,不能直接算组合数

考虑递推

技术分享

#include<cstdio>
#define N 100001
using namespace std;
double a[N];
int main()
{
    a[2]=1;
    for(int i=4;i<N;i+=2) a[i]=a[i-2]*(i-3)/(i-2); 
    int t,n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        printf("%.4lf\n",1-a[n]);
    }
}

 

uva 557 Burger

标签:font   alt   images   表示   printf   style   amp   using   决定   

原文地址:http://www.cnblogs.com/TheRoadToTheGold/p/6941143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!