新普金娱乐洛谷——P2719 搞笑世界杯。Codevs 1060 搞笑世界杯。

问题背景

十分遥远很老后,一蹩脚世界杯,。

1060 搞笑世界杯

 

 时间限制: 1
s

 空间限制: 128000
KB

 题目等级 : 钻石
Diamond

题解

 查看运行结果

 

 

题材叙述 Description

 
  随着世界杯小组赛的收尾,法国,阿根廷相当于世界强队都困扰为裁,让人心痛不已.
于是有

人数团体了相同场为笑世界杯,将这些让淘汰的强队还组织起与世界杯一同比赛.你跟汝的宾朋

友好欣然去打球票.不了为笑世界杯的球票出售方呢很特别,它们才准备了简单栽球票.A

票——免费球票 B
类票——-双倍价钱球票.购买时出于工作人员通过掷硬币决定,投到正直

的买A类票,
反面的市B类票.并且由是市场经济,主办方不可能倒贴钱,所以她们总是准备

了一致多之A类票和B类票.你跟汝的恋人很侥幸的破至了某场精彩竞的末尾两单位置.

这工作人员开始通过硬币售票.不过更为幸运的是当工作人员到你们眼前时他发现已经无需

又投硬币了,因为剩下的即时有限摆票均是免费票。

 

 
  你及公的情人当高兴的衍,想计算一下去掉在队尾的星星单人口又以到平等种植票的几率是多少

(包括以拿A 类票或B类票) 假设工作人员准备了2n 张球票,其中n 张A类票,n
张B类票,并且消除在军遭到之人每人必须还只能买同样布置球票(不管掷到的是拖欠进A
还是欠买B).

输入描述 Input Description

    输入文件才一行,包含球票数2n . 其中,0<n<=1250 ,n 为整数。

输出描述 Output Description

    输出文件只含一个频,为用到同样栽票底票房价值,精确到小数点后4 位。

样例输入 Sample Input

256

样例输出 Sample Output

  1. 9500

    /*

     dp[i][j]表示a票选了i个,b票选了j个,且最后剩下两张票相同的方案数
    

    */
    #include
    #include
    using namespace std;
    int n,m;
    double dp[1252][1252];
    int main(){

     scanf("%d",&n);
     n/=2;
     for(int i=2;i<=n;i++)dp[i][0]=dp[0][i]=1;
     for(int i=1;i<=n;i++)
         for(int j=1;j<=n;j++)
             dp[i][j]=dp[i-1][j]*0.5+dp[i][j-1]*0.5;
     printf("%.4lf",dp[n][n]);
    

    }

 

问题叙述

趁世界杯小组赛的了,法国,阿根廷对等世界强队还纷纷于裁,让丁心痛不已.
于是有人组织了同一街为笑世界杯,将这些受裁的过人队还组织起和世界杯一同比赛.你与而的心上人乐去进货球票.不了将笑世界杯的球票出售方啊充分特别,它们不过准备了点儿栽球票.A
类票——免费球票 B
类票——-双倍价钱球票.购买时由于工作人员通过掷硬币决定,投到正直,的买A类票,
反面的购入B类票.并且由是市场经济,主办方不可能倒贴钱,所以她们连续准备了一样多的A类票和B类票.你与而的恋人十分幸运的铲除至了某场精彩较量之尾声两单位置.

这会儿工作人员开始通过硬币售票.不过更为幸运的是当工作人员到你们眼前时他发现已经任需更抛硬币了,因为剩下的马上有限张票都是免费票。

乃与而的对象于欢快之衍,想计算一下散在队尾的片个人同时将到均等栽票的概率是微(包括以拿A
类票或B类票) 假设工作人员准备了2n 张球票,其中n 张A类票,n
张B类票,并且消除在部队遭到的人数每人要还不得不打同一摆球票(不管掷到的凡该打A
还是拖欠买B).

输入输出格式

输入格式:

 

输入文件才一行,包含球票数2n . 其中,0<n<=1250 ,n 也整数。

 

输出格式:

 

出口文件就含一个反复,为以到均等栽票底票房价值,精确到多少数点后4 位。

 

输入输出样例

新普金娱乐输入样例#1: 复制

256

出口样例#1: 复制

0.9500

dp

dp[i][j]意味着有i个A,j个B时最后2独一样的几率

盖是抛弃硬币,前面的口免费与对加倍之情形各占一半

状态转移方程:f[i][j]=f[i-1][j]*0.5+f[i][j-1]*0.5;

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 2000
using namespace std;
int n;
double dp[N][N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
    return x*f;
}
int main()
{
    n=read();n>>=1;
    for(int i=2;i<=n;i++)    
     dp[i][0]=dp[0][i]=1;
    for(int i=1;i<=n;i++)
     for(int j=1;j<=n;j++)
      dp[i][j]=(dp[i-1][j]+dp[i][j-1])*0.5;
    printf("%.4lf",dp[n][n]);
    return 0;
}

相关文章