2012ICPC长春站 B Candy 【快速排列组合】
来源:互联网 发布:淘宝手表店推荐 编辑:程序博客网 时间:2024/05/17 02:59
Font Size: ← →
Problem Description
LazyChild is a lazy child who likes candy very much. Despite being very young, he has two large candy boxes, each contains n candies initially. Everyday he chooses one box and open it. He chooses the first box with probability p and the second box with probability (1 - p). For the chosen box, if there are still candies in it, he eats one of them; otherwise, he will be sad and then open the other box.
He has been eating one candy a day for several days. But one day, when opening a box, he finds no candy left. Before opening the other box, he wants to know the expected number of candies left in the other box. Can you help him?
Input
There are several test cases.
For each test case, there is a single line containing an integer n (1 ≤ n ≤ 2 × 105) and a real number p (0 ≤ p ≤ 1, with 6 digits after the decimal).
Input is terminated by EOF.
Output
For each test case, output one line “Case X: Y” where X is the test case number (starting from 1) and Y is a real number indicating the desired answer.
Any answer with an absolute error less than or equal to 10-4 would be accepted.
Sample Input
10 0.400000
100 0.500000
124 0.432650
325 0.325100
532 0.487520
2276 0.720000
Sample Output
Case 1: 3.528175
Case 2: 10.326044
Case 3: 28.861945
Case 4: 167.965476
Case 5: 32.601816
Case 6: 1390.500000
Source
2012 Asia Chengdu Regional Contest
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<iomanip>#include<string>#include<vector>#include<stack>#include<queue>#include<cmath>#include<functional>using namespace std;#define LL long long int #define INF 0x3f3f3f3fconst int maxn = 1e5 + 10;const int MOD = 1e9 + 7;double x, y; int n;double logn[maxn];double C(int n, int m){ return logn[n] - logn[m] - logn[n - m];}int main(){ memset(logn, 0.0, sizeof(logn)); for (int i = 1; i < maxn; i++) { logn[i] = logn[i - 1] + log(i*1.0); } int k = 0; while (cin >> n) { k++; cin >> x; y = 1.0 - x; if(x>y) swap(x, y); x = log(x); y = log(y); double ans = 0;//期望 for (int i = 0; i < n + 1; i++) { ans += i*(exp(C(2 * n - i, n) + (n + 1)*x + (n - i)*y)); ans += i*(exp(C(2 * n - i, n) + (n + 1)*y + (n - i)*x)); } cout << "Case " << k << ": " << setiosflags(ios::fixed) << setprecision(6) << ans << endl; } return 0;}
- 2012ICPC长春站 B Candy 【快速排列组合】
- hdu4465 Candy(快速排列组合+概率)
- hdu4465 Candy(快速排列组合+概率)
- hdu 4465 Candy 组合数(快速排列组合)
- hdu 4465 Candy (快速排列组合 )
- HDOJ 题目4465 Candy(快速排列组合)
- 2012ICPC长春站 A Browsing History 【字符串】
- 2012ICPC长春站 I Count【暴力+模拟】
- 2012 ACM ICPC 长春网络赛B Alice And Bob 线段树的延伸利用
- 【2012 ACM-ICPC 长春 Onsite】长春失利总结
- 2012 ACM/ICPC 长春赛区网络赛
- 2012 ICPC/ACM 成都现场赛 Candy
- 2012长春站B题 zoj 3656 并查集
- 2012ICPC长春站 K Yet Another Multiple Problem 【BFS+同余模定理】
- F--Almost Sorted Array(2015-ACM-ICPC长春站)
- J-Chip Factory(2015ACM-ICPC长春站)
- G-Dancing Stars on Me(2015ACM-ICPC长春站)
- ACM-ICPC 2012 长春.准备(16张照片,外链)
- 【SQL Server学习笔记】18:对字符数据的处理
- bzoj 3143: [Hnoi2013]游走(高斯消元)
- 一些Linux命令简要笔记——文件系统
- chapter2:协同过滤
- VIJOS-P1626 爱在心中 tarjan
- 2012ICPC长春站 B Candy 【快速排列组合】
- bzoj-4627 [BeiJing2016]回转寿司 hash+权值线段树
- Go的闭包——计数器
- Unity_DOTween动画的学习(五)_Tweener的使用和注意事项_DOPlay播一次_DOPlayForward播多次_DOPlayBackwards倒放_SetAutoKill动画的自动销
- 2012ICPC长春站 I Count【暴力+模拟】
- Kubelet源码分析之diskSpaceManager
- JavaScript-2-6:canvas
- Ubuntu硬盘空间不足时,添加硬盘的方法
- MySQL系列优化(一)