uva 557 Burger

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]);
    }
}
时间: 2024-10-14 01:02:27

uva 557 Burger的相关文章

UVA 557 Burger 排列组合递推

When Mr. and Mrs. Clinton's twin sons Ben and Bill had their tenth birthday, the party was held at the McDonald's restaurant at South Broadway 202, New York. There were 20 kids at the party, including Ben and Bill. Ronald McDonald had made 10 hamburg

UVa 557 Burger (概率+递推)

题意:有 n 个牛肉堡和 n 个鸡肉堡给 2n 个客人吃,在吃之前抛硬币来决定吃什么,如果剩下的汉堡一样,就不用投了,求最后两个人吃到相同的概率. 析:由于正面考虑还要要不要投硬币,太麻烦,所以我们先求最后两人吃到不同的概率即可,再用 1 减去就OK. 假设最后两个人吃的不一样,那么前 n-2 个人吃的肯定是 n/2 -1个牛肉堡和n/2-1 个鸡肉堡,根据排列组合可知,概率应该是C(n-2, n/2-1) * (0.5)^(n-2). 这就是公式,然而这个并不好算,很可能超时,所以我们再把第

UVa 557 (概率 递推) Burger

题意: 有两种汉堡给2n个孩子吃,每个孩子在吃之前要抛硬币决定吃哪一种汉堡.如果只剩一种汉堡,就不用抛硬币了. 求最后两个孩子吃到同一种汉堡的概率. 分析: 可以从反面思考,求最后两个孩子吃到不同汉堡的概率. 因为最后两个汉堡是不同的,所以前面的2n-2个孩子吃汉堡之前一定都是要抛硬币的. 所以,吃两种汉堡的孩子人数相等,都是n-1个. 令,对于2n个孩子吃汉堡,所求概率为1 - f(n-1) 我们还可以递推f, 1 #include <iostream> 2 #include <cst

UVa 11661 - Burger Time?

题目:给你一个长度是n的字符串,判断距离最近的R和D见得距离,如果有Z输出0. 分析:dp,简单dp.直接从两个方向找到每个R前面最近的D即可. 说明:简单题. #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespace std; cha

UVA题目分类

题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes

UVA 562 Dividing coins --01背包的变形

01背包的变形. 先算出硬币面值的总和,然后此题变成求背包容量为V=sum/2时,能装的最多的硬币,然后将剩余的面值和它相减取一个绝对值就是最小的差值. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define N 50007 int c[102],d

UVA 10341 Solve It

Problem F Solve It Input: standard input Output: standard output Time Limit: 1 second Memory Limit: 32 MB Solve the equation: p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0 where 0 <= x <= 1. Input Input consists of multiple test cases and te

UVA 11014 - Make a Crystal(容斥原理)

UVA 11014 - Make a Crystal 题目链接 题意:给定一个NxNxN的正方体,求出最多能选几个整数点.使得随意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O).那么全部点就是f(1),之后要去除掉共线的,就是扣掉f(2), f(3), f(5)..f(n).n为素数.由于这些素数中包括了合数的情况,而且这些点必定与f(1)除去这些点以外的点共线,所以扣掉.可是扣掉后会扣掉一些反复的.比方f(6)在f

[UVa] Palindromes(401)

UVA - 401 Palindromes Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDED