hdu 4465 Candy 数学】的更多相关文章

思路:易知结果为 ∑(n-k)*C(n+k,k)*(p^(n+1)*q^k+q^(n+1)*p^k). 注意不能直接算,注意点技巧!!!看代码 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> using namespace std; int main(){ ; double p,q,ans1,ans2,…
题目链接: Hdu 4465 Candy 题目描述: 有两个箱子,每个箱子有n颗糖果,抽中第一个箱子的概率为p,抽中另一个箱子的概率为1-p.每次选择一个箱子,有糖果就拿走一颗,没有就换另外一个箱子.问换箱子的时候,另外一个箱子中剩下糖果的期望值. 解题思路: 注意题目描述,其中任意一个箱子没有糖果,另一个箱子中剩下糖果个数的期望,而不是第一个箱子没有糖果.不是把其中一个箱子取空时,另一个箱子剩下糖果的期望,而是其中一个箱子取空再换另外一个箱子时,这个箱子的期望. 可以根据期望性质画出公式:an…
题意:有两个盒子各有n个糖(n<=2*105),每天随机选1个(概率分别为p,1-p),然后吃掉一颗糖.直到有一天打开盒子一看,这个盒子没有糖了.输入n,p,求此时另一个盒子里糖的个数的数学期望. 思路:假设没糖的是A盒子,而B盒子还有0~n个糖.由于B盒子还有0个糖的情况的期望必为0,所以省略,只需要计算1~n的. (1)当A盒没有糖时,B盒就可能有1~n个糖,概率为C(n+i,i)*(pn+1)*(1-p)n-i.为啥还带个大C?这是情况的种数(想象取糖时还有个顺序,有C种可能的顺序),不然…
2012成都Regional的B题,花了一个小时推出了式子,但是搞了好久发现都控制不了精度,后来突然想到组合数可以用log优化,改了之后就AC了 比较水的概率题 #include <stdio.h> #include <math.h> #define maxn 200005 double f[2*maxn]; double c(int a,int b) { return f[a]-f[a-b]-f[b]; } int main() { f[0]=0; for(int i=1;i&l…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4465 参考博客:http://www.cnblogs.com/goagain/archive/2012/11/20/2778633.html 看他的分析足够了 下面的代码也是他写的,觉得优美就贴下来: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #includ…
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 wi…
简单概率题,可以直接由剩余n个递推到剩余0个.现在考虑剩余x个概率为(1-p)的candy时,概率为C(2 * n - x, x) * pow(p, n + 1)  *pow(1 - p, n - x): 在写出x - 1的情况,就可以发现组合数可以直接递推,所以可以直接求.但是考虑到p可能很小,n可能很大,这样的话直接用pow函数会丢失精度,我们可以把double类型写成log10的形式,这样可以保存精度. #include<algorithm> #include<iostream&g…
题解: 由题意得 需要运用: C(m,n)=exp(logC(m,n)) f[]=; ; i<=; i++) f[i]=f[i-]+log(i*1.0); double logC(int m,int n) { return f[m]-f[n]-f[m-n]; } #include<stdio.h> #include<math.h> ]; double logC(int m,int n) { return f[m]-f[n]-f[m-n]; } int main() { f[]…
/** 对于大数的很好的应用,,缩小放大,,保持精度 **/ #include <iostream> #include <cmath> #include <algorithm> #include <cstdio> using namespace std; int main() { double n,p; ; while(cin>>n>>p){ double p1 = log(p+0.0); -p+0.0); )*p1; )*p2; ,…
数学,数值计算,求期望 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4465题目描述:有两个盒子,每个中有n个糖果,(n<10^5)每次任选一个盒子,如果有糖就吃掉,没糖就去开另一个盒子.选中盒子1的概率为p,选中盒子2的概率为1-p.问当发现一个盒子里没有糖时,另一个盒子中糖果的个数的数学期望.解法:利用数学期望的定义,结果一共为x = 0,1,2,```,n.如果知道p(x),求sum(x*p(x))即可.为方便计算,设吃掉了i个糖果时发现…