「51Nod1639」绑鞋带(概率

Posted qwerta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「51Nod1639」绑鞋带(概率相关的知识,希望对你有一定的参考价值。

 

基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
技术分享图片 收藏
技术分享图片 关注
有n根鞋带混在一起,现在重复n次以下操作:随机抽出两个鞋带头,把它们绑在一起。可以想象,这n次之后將不再有单独的鞋带头,n条鞋带系成了一些环。那么有多大概率刚好所有这些鞋带只形成了一个环?
Input
仅一行,包含一个整数n  (2<=n<=1000)。
Output
输出一行,为刚好成环的概率。
Input示例
2
Output示例
0.666667

题解

考虑当前已经打了$i$个结,

那么当前还有$2*n-2*i$个鞋带头,

其中你捏住了一个,还剩$2*n-2*i-1$个鞋带头,

这其中只有一个(跟你捏住的在同一根绳上的)鞋带头是不可以打结的,

所以这一步能打一个符合要求的结的概率为$frac{2*n-2*i-2}{2*n-2*i-1}$.

$i$从$0$循环到$n-2$,当打了$n-1$个结时停下.(因为$n-1$个结时已经成一条链了).

答案就是累乘的结果.

 1 /*
 2 C++
 3 15 ms
 4 2108 KB
 5 Accepted
 6 2018/10/26
 7 17:01:37
 8 */
 9 #include<iostream>
10 #include<cstdio>
11 using namespace std;
12 int main()
13 {
14     //freopen("a.in","r",stdin);
15     int n;
16     scanf("%d",&n);
17     double ans=1;
18     for(int i=0;i<n-1;++i)
19     {
20         ans*=(double)(2*n-(2*i)-2)/(2*n-(2*i)-1);
21     }
22     cout<<ans;
23     return 0;
24 }

 

以上是关于「51Nod1639」绑鞋带(概率的主要内容,如果未能解决你的问题,请参考以下文章

51Nod - 1639 绑鞋带

51Nod1639 绑鞋带

51nod 1639 绑鞋带

51nod1639(组合数学)

美团2016研发工程师笔试题(绑鞋带问题)

51Nod 1450 闯关游戏 —— 期望DP