Codevs 1060 搞笑世界杯。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]);
    

    }

 

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

数据范围和提示 Data Size
& Hint

en

 

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn = 1500;
double f[maxn][maxn];
int n;
//f[i][j] A剩下i张 B剩下j张 最后两个人 相同的概率
// 很明显 只剩下一种票时 两个人的概率一定相同 
//f[i][j]=f[i-1][j]*0.5+f[i][j-1]*0.5 
int main()
{
    scanf("%d",&n);
    n/=2;
    for(int i=2;i<=n;i++)// 当其中一种门票只剩下一张时肯定不相同 
      f[i][0]=f[0][i]=1.0;
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
        f[i][j]=f[i-1][j]*0.5+f[i][j-1]*0.5;
    printf("%.4lf",f[n][n]);
    return 0;
}

  

相关文章