HDU 5194 DZY Loves Balls
来源:互联网 发布:组态王软件价格 编辑:程序博客网 时间:2024/05/18 03:37
Problem Description
There are n black balls and m white balls in the big box.
Now, DZY starts to randomly pick out the balls one by one. It forms a sequenceS . If at the i -th operation, DZY takes out the black ball, Si=1 , otherwise Si=0 .
DZY wants to know the expected times that '01' occurs inS .
Now, DZY starts to randomly pick out the balls one by one. It forms a sequence
DZY wants to know the expected times that '01' occurs in
Input
The input consists several test cases. (TestCase≤150 )
The first line contains two integers,n , m(1≤n,m≤12)
The first line contains two integers,
Output
For each case, output the corresponding result, the format is p/q (p and q are coprime)
Sample Input
1 12 3
Sample Output
1/26/5HintCase 1: S='01' or S='10', so the expected times = 1/2 = 1/2Case 2: S='00011' or S='00101' or S='00110' or S='01001' or S='01010' or S='01100' or S='10001' or S='10010' or S='10100' or S='11000',so the expected times = (1+2+1+2+2+1+1+1+1+0)/10 = 12/10 = 6/5
考虑期望的可加性。第强大的题解,可惜本人是想不到这样的,自己dp玩玩。i(1≤i<n+m) 个位置上出现0,第i+1 个位置上出现1的概率是mn+m×nn+m−1 ,那么答案自然就是∑i=1n+m−1mn+m×nn+m−1=nmn+m 如果你不能马上想到上述的简便的方法,也可以选择暴力枚举所有01串,也是可以AC的。最后一步你需要再计算一下gcd,十分简便。#include<stdio.h>#include<iostream>#include<algorithm>#include<map>#include<queue>#include<stack>#include<vector>#include<cstdlib>using namespace std;const int maxn = 20;int n, m, T, f[maxn][maxn][4], tot;int gcd(int x, int y){ if (x % y != 0) return gcd(y, x%y); return y;}int main(){ while (scanf("%d%d", &n, &m) != EOF) { memset(f, 0, sizeof(f)); for (int i = 1; i <= max(n, m); i++) f[0][i][0] = f[i][0][1] = 1; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (i + j) { f[i][j][0] = f[i][j - 1][0] + f[i][j - 1][1]; f[i][j][2] = f[i][j - 1][2] + f[i][j - 1][3]; f[i][j][1] = f[i - 1][j][0] + f[i - 1][j][1]; f[i][j][3] = f[i - 1][j][2] + f[i - 1][j][3] + f[i - 1][j][0]; } for (int i = n + 1, j = tot = 1; i <= n + m; i++) { tot *= i; while (j <= m&&tot%j == 0) tot = tot / j++; } int k = gcd(tot, f[n][m][3] + f[n][m][2]); printf("%d/%d\n", (f[n][m][2] + f[n][m][3]) / k, tot / k); }}
0 0
- HDU 5194 DZY Loves Balls
- HDU 5194 DZY Loves Balls
- HDU 5194 DZY Loves Balls
- hdu DZY Loves Balls
- hdu 5194 DZY Loves Balls (dp)
- HDU 5194——DZY Loves Balls
- hdu 5194 DZY Loves Balls(组合数学)
- HDU 5194 DZY Loves Balls(期望可加性)
- HDU 5194 DZY Loves Balls(概率)
- hdu 5645 DZY Loves Balls
- HDU 5645 DZY Loves Balls
- hdu 5645 DZY Loves Balls
- HDU 5645 DZY Loves Balls
- hdoj 5194 DZY Loves Balls
- HDOJ 5194 DZY Loves Balls
- HDU 5194 DZY Loves Balls(排列组合瞎搞 )
- HDU-5194-DZY Loves Balls(BestCoder Round # 35 )
- hdu 5194 DZY Loves Balls【bfs+打表】
- wish
- Python-- easy_install 的安装
- Cocos2dx 学习笔记 -TMX和物理引擎的结合
- 为什么x86模式里BIOS在0x7c00加载MBR
- 【ACM】最大的矩形
- HDU 5194 DZY Loves Balls
- IOS 几种简单常用动画
- UltimateRecyclerView
- 常见的正则表达式总结
- 1 计算机组成原理和系统安装(云计算)
- UML建模快速入门00 Outline
- 如何规划和配置YARN和MapReduce 2
- LeetCode - Construct Binary Tree from Inorder and Postorder Traversal
- Sicily 13290 Play with Strings powered by wangbin