设置最后打开的是盒子1, 另外一个盒子剩下i个 那么在这之前打开了n + n - i次盒子 那么这个时候的概率是C(2 * n - i, n) p ^ (n+1) (1-p)^ (n - i) 那么反过来最后打开的是盒子2, 那么概率是C(2 * n - i, n) p ^ (n-i) (1-p)^ (n +1) 那么当前的概率就是两个加起来,然后乘以权值,即i就可以了 所以枚举所有的i加起来就好了. 但这样会损失很多精度, 所以我们可以用对数 也就是说算的时候先取对数来算,后来再取回去 不要忘…
题意:两个箱子,每个箱子有n颗糖,每次有p的概率拿1号箱子的一颗糖出来(有1-p的概率拿2号箱子的一颗糖出来),问当打开某个箱子为空的时候,另一个箱子的期望糖的数量是多少 题解:枚举另一个箱子的糖的数量乘以可能性就是答案,一部分是:C(i,n+i) *p^(n+1) *(1-p)^i *(n-i)(剩下n-i颗糖) 注意可能是1号箱子糖拿完了,也可能是2号箱子糖拿完了,然后就是拿完了的那个箱子查看的次数不是n,而是n+1次:接着要注意精度,需要使用对数(e^In(x)=x)与long doubl…
设当前有k个,那么也就是说拿到其他图案的可能是(n-k)/n 那么要拿到一个就要拿n/(n-k)次 所以答案就是n(1/n + 1/(n-1) ......1/2 + 1 / 1) 看起来很简单,但是实现有很多细节 一开始我是写了一个分数加法的函数 然后发现中间过程会溢出 所以要做两个操作 (1)  分母为1和n不算,最后算整数部分再加上去 因为如果算的话就要乘进去,分母会溢出 (2)要直接算所有数的最小公倍数,然后分子一起加(看代码) 我一开始是单独一个个分数来加减,这样在算分子的时候中间结果…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4514 题意: 有两个盒子各有n(1≤n≤2e5)个糖,每天随机选一个(概率分别为p,1-p),然后吃一颗糖.直到有一天,打开盒子一看,没糖了!输入n,p,求此时另一个盒子里糖的个数的数学期望. 分析: 根据期望的定义,不妨设最后打开第1个盒子,此时第2个盒子有i颗,则这之前打开过n…
题意:有两个盒子各有n个糖,每次随机选一个(概率分别为p,1-p),然后吃掉,直到有一次,你打开盒子发现,没糖了! 输入n,p,求另一个盒子里糖的个数的数学期望. 析:先不说这个题多坑,首先要用long double来实现高精度,我先用的double一直WA,后来看了题解是用long double, 改了,可一直改不对,怎么输出结果都是-2.00000,搞了一晚上,真是无语,因为我输入输出数据类型是long double, 结果一直不对 ,可能是我的编译器是C89的吧,和C语言,输入输出格式不同…
https://vjudge.net/problem/UVA-1639 有两个盒子各有n(n≤2*10 5 )个糖,每天随机选一个(概率分别为p,1-p),然后吃一颗糖. 直到有一天,打开盒子一看,没糖了! 输入n, p,求此时另一个盒子里糖的个数的数学期望. 若最后打开第1个盒子,此时第2个盒子有i颗,则这之前打开过n+(n-i)次盒子, 其中有n次取的是盒子1,其余n-i次取的盒子2, 概率为C(2n-i, n)*p^(n+1) *(1-p)^(n-i) 注意p的指数是n+1,因为除了前面打…
题目链接:https://vjudge.net/problem/UVA-1639 题目大意: 有两个糖果盒,每个盒子里面有n个糖果,每天随机选一个(概率分别为p,1-p),然后吃一颗糖.直到有一天,打开盒子一看,没有糖了. 输入n,p;求此时另外一个盒子里面糖的个数的数学期望. 题目分析: 可以假设另外一个盒子里面还剩下i个,此时一共选了n+n-i次, 所以共有C(2n-i,n)种组合,期望为i*C(2n-i,n)*p^(n+1)*(1-p)^(n-i)+i*C(2n-i,n)*(1-p)^(n…
感觉数学期望的和化学里面求元素的相对原子质量的算法是一样的 就是同位素的含量乘上质量然后求和得出 这道题因为等待时机是0到2*l/v均匀分配的,所以平均时间就是l/v 再加上过河的l/v, 最后加上步行的时间就ok了 #include<cstdio> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; int main() { int n, D, kase = 0; while(~scanf(&…
X表示剩下的糖数量,如果最后打开的是p对应的盒子.划分:Xi表示剩下i个糖,最后一次选的概率为p, 前面的服从二项分布.根据全概率公式和期望的线性性,求和就好了. 精度处理要小心,n很大,组合数会很大,p的部分很小,要取对数,而且中间计算精度也要用long double才够. 组合数的对数预处理一下或者递推一下就好了. /********************************************************* * --------------Tyrannosaurus-…
题1: Uva 1636 Headshot 题目大意: 给出一个000111序列,注意实际上是环状的.问是0出现的概率大,还是当前是0,下一个还是0的概率大. 问题比较简单,注意比较大小: A/C > B/D  <=> A * D > B * C #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <iostr…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3382 题意: 你住在村庄A,每天需要过很多条河到另一个村庄B上班.B在A的右边,所有的河都在中间.幸运的是,每条河上都有匀速移动的自动船,因此每当到达一条河的左岸时,只需等船过来,载着你过河,然后在右岸下船.你很瘦,因此上船之后船速不变.日复一日,年复一年,你问自己:从A到B,平均…
题意:有两个盒子各有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种可能的顺序),不然…
题意:给定一个整数 n ,然后你要把它变成 1,变换操作就是随机从小于等于 n 的素数中选一个p,如果这个数是 n 的约数,那么就可以变成 n/p,否则还是本身,问你把它变成 1 的数学期望是多少. 析:一个很明显的期望DP,dp[i] 表示把 i 变成 1 的期望是多少,枚举每一种操作,列出表达式,dp[i] = ∑dp[i/x]/q + p/q*dp[i] + 1,其中 x 表示枚举的素数,然后 p 表示不是 i 的约数个数,q 是小于等于 n 的素数个数,然后变形,可以得到 dp[i] =…
题意:某个人每天晚上都玩游戏,如果第一次就䊨了就高兴的去睡觉了,否则就继续直到赢的局数的比例严格大于 p,并且他每局获胜的概率也是 p,但是你最玩 n 局,但是如果比例一直超不过 p 的话,你将不高兴的去睡觉,并且以后再也不玩了,现在问你,平均情况下他玩几个晚上游戏. 析:先假设第一天晚上就不高兴的去睡觉的概率是 q,那么有期望公式可以得到 E = q + (1-q) * (E + 1),其中 E 就是数学期望,那么可以解得 E = 1/ q,所以答案就是 1 / q,这个公式是什么意思呢,把数…
题意:你要从A到B去上班,然而这中间有n条河,距离为d.给定这n条河离A的距离p,长度L,和船的移动速度v,求从A到B的时间的数学期望. 并且假设出门前每条船的位置是随机的,如果不是在端点,方向也是不定的,你在陆地行走速度为1,输入保证河在AB之前,并且不会重叠. 析:一看这个题,好像不会啊...这怎么求,这么乱,这么复杂... 但是仔细一想求时间期望,不就是在过河的地方时间不是固定的么,只要求出过河的时间的数学期望,利用数学期望的线性,加起来就OK了. 这样一想感觉就不乱了,那么怎么求每个河的…
题目大意:给一个正整数N,每次可以在不超过N的素数中随机选择一个P,如果P是N的约数,则把N变成N/p,否则N不变,问平均情况下需要多少次随机选择,才能把N变成1? 分析:根据数学期望的线性和全期望公式可以为每个状态列出一个方程,例如: f(x)=1+f(6)*1/3+f(3)*1/3+f(2)*1/3 等式右边的最前面的“1”是指第一次转移,而后面的几项是后续的转移,用全期望公式展开,一般地,设不超过x的素数有p个,其中有g个是x的因子,则 f(x)=1+f(x)*(1-g/p)+Σf(x/y…
你住在村庄A,每天需要过很多条河到另一个村庄B上班,B在A的右边,所有的河都在A,B之间,幸运的是每条船上都有自由移动的自动船, 因此只要到达河左岸然后等船过来,在右岸下船,上船之后船的速度不变.现在问从A到B的期望时间是多少,假设在出发时船的位置都是 随机分布.人在 陆地上行走的速度为1. 根据数学期望的线性,过每条河的时间为L/v(到河边船刚好开)到3L/v(到河边船刚好开走)的均匀分布,因此期望过河时间为 (L+3L/v)/2=(2*L/v) 加上 D-sum(L) . #include…
1639 - Candy Time limit: 3.000 seconds 1639 CandyLazyChild 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 fi…
[BZOJ3143]游走(高斯消元,数学期望) 题面 BZOJ 题解 首先,概率不会直接算... 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到\(5000\)步可以拿\(50\)分) #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorith…
A - 容斥原理(CodeForces - 451E) 二进制状态压缩暴力枚举哪几个花选的个数超过了总个数,卢卡斯定理求组合数,容斥原理求答案 可以先把每个花的数量当成无限个,这样就是一个多重集的组合数$ans=C_{n+m-1}^{n-1}$ 所以要减去有一种花超过花的数量的情况,加上有两种花超过花的数量的情况,减去有三种花超过花的数量的情况... 最后$ans=C_{n+m-1}^{n-1}-\sum_{i=1}^{n}C_{n+m-a_{i}-2}^{n-1}+\sum_{i=1}^{n}…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3143 分析: 易得如果知道了每条边经过的数学期望,那就可以贪心着按每条边的期望的大小赋值,所以问题就是如何求每条边的期望. 直接求没办法求的,可以先求出每个点经过的期望. 易得f[i]=∑f[j]/d[j] j->i有边 特殊的,对于起点,因为刚开始就在,所以应该是f[1]=1+∑f[j]/d[j]:对于终点,到了终点后不能再到其他节点,所以对其他边并没有贡献,所以f[n]=0 然后…
题目链接 题意 : 一个m面的骰子,掷n次,问得到最大值的期望. 思路 : 数学期望,离散时的公式是E(X) = X1*p(X1) + X2*p(X2) + …… + Xn*p(Xn) p(xi)的是所有最大值是xi的情况数/总情况数一共是m^n种,掷n次,所有最大值是xi的情况数应该是xi^n,但是这里边却包含着最大值非xi且不超过xi的种数,所以再减去最大值是xi-1或者最大值不超过这个的情况数.即sum += xi * (xi^n-(xi-1)^n)/m^n,但是这样求肯定是不行,因为m…
The number of steps nid=24#time" style="padding-bottom:0px; margin:0px; padding-left:0px; padding-right:0px; color:rgb(83,113,197); text-decoration:none; padding-top:0px"> Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 Mary…
[BZOJ2134]单位错选(数学期望,动态规划) 题面 BZOJ 题解 单独考虑相邻的两道题目的概率就好了 没了呀.. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map> #include&l…
[BZOJ1415][NOI2005]聪聪和可可(动态规划,数学期望) 题面 BZOJ 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #i…
[Luogu1291]百事世界杯之旅(动态规划,数学期望) 题面 洛谷 题解 设\(f[i]\)表示已经集齐了\(i\)个名字的期望 现在有两种方法: 先说我自己的: \[f[i]=f[i-1]+1+(1-p)(1*p^1+2*p^2+....)\] 其中\(p=\frac{i-1}{n}\) 为什么,很简单 首先要多收集一个,期望\(+1\)是显然的 但是还可能一直买到了已经有的名字中的一个 有\(p\)的概率多买一个 \(p^2\)的概率多买两个 这样无穷的算下去 然后对于后面那个式子 做两…
[BZOJ4872]分手是祝愿(动态规划,数学期望) 题面 BZOJ 题解 对于一个状态,如何求解当前的最短步数? 从大到小枚举,每次把最大的没有关掉的灯关掉 暴力枚举因数关就好 假设我们知道了当前至少要关\(tot\)次 如果一个灯被动两次以上是没有任何意义的 所以,相当于,要动的灯只有\(tot\)个 其他的是没有任何意义的 所以,题面可以变为: 现在有\(tot\)个\(1\),\(n-tot\)个\(0\) 每次随机选择一个数将其异或\(1\) 求最终变为\(0\)的期望 我们现在考虑一…
[BZOJ1076]奖励关(动态规划,数学期望) 题面 懒,粘地址 题解 我也是看了题解才会做 看着数据范围,很容易想到状压 然后,设\(f[i][j]\)表示当前第\(i\)轮,状态为\(j\)的期望 枚举当前掉出来哪一个物品 然后....怎么转移??? 当前物品如果原来出现过,,我也不知道出现了几次呀... 根本找不到上一次的状态 然后\(hzwer\)告诉我们,倒着来 设这样的话,状态倒过来推,我们就只需要往上加东西的状态即可 #include<iostream> #include<…
一.数学期望 1.离散型随机变量的数学期望 设X为离散随机变量,其概率分布为:P(X=xk)=pk 若无穷级数$\sum_{k=1}^{+\infty}x_kp_k$绝对收敛 (即满足$\sum_{k=1}^{+\infty}|x_kp_k|$收敛) 则称其为X的数学期望,记作$E(X)=\sum_{k=1}^{+\infty}x_kp_k$ 二项分布,X~B(n,p),E(X)=np 泊松分布,X~P(λ),E(X)=λ 超几何分布,X~H(N,M,n),E(X)=nM/N 几何分布,X~GE…
对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1$. /** @Date : 2017-10-06 14:32:03 * @FileName: HDU 5984 数学期望.cpp * @Platform: Windows * @Author : Lweleth (SoungEarlf@gmail.com) * @Link : https://gi…