Xi X i 如果第i..." />
当前位置: 代码迷 >> 综合 >> hdu5194 DZY Loves Balls
  详细解决方案

hdu5194 DZY Loves Balls

热度:95   发布时间:2023-10-29 08:10:43.0

题意

你现在有n个1,和m个0
然后你将他们随机排列,询问01作为子串的期望出现次数

前言

直接排列组合是可以弄出来的
这里不再赘述
有人说爆搜可以过,我保持质疑态度。。
但是打表可以过应该是对的。。
我这里说说怎么用期望方法做

题解

我们考虑一下,对于第ii位,我们设 X i
如果第i位为00,且 i + 1 11,那么 X i = 1
反之为0
那么我们可以得到,答案就是

E(i=1n+m?1Xi)E(∑i=1n+m?1Xi)

根据期望的可加性,我们可以把每一位独立来算
又因为每一位只有 11 0 两种
所以其实就是求出是 11 的概率就可以了
我们考虑一下第i位为 0 的概率是 mn+mmn+m
如果第i为确定了,那么 i+1i+1 位是1的概率就是 nn+m?1nn+m?1
那么对于每一位,他的概率就是 nm(n+m)(n+m?1)nm(n+m)(n+m?1)
我们一共有 n+m?1n+m?1
因此答案就是 nmn+mnmn+m
至此,问题已经解决,我们得到了一个O(1)的方法

CODE:

#include<cstdio>
int n,m;
int gcd (int x,int y){
   return x==0?y:gcd(y%x,x);}
int main()
{while (scanf("%d%d",&n,&m)!=EOF){int a=n*m,b=m+n;int d=gcd(a,b);printf("%d/%d\n",a/d,b/d);}return 0;
}