期望屑题(更新中)
期望题
\(t1:\)单位错选
这题期望等于概率,值等于\(1\)
\(a_i=a_{i+1}\),随机答案在\(i+1\)也随机,期望为\(\large\frac 1 {a_{i+1}}\)
\(a_i>a_{i+1}\),只有\(\frac{a_{i+1}}{a_i}\)概率在\(1\sim a_{i+1}\)中,期望为\(\large\frac{a_{i+1}}{a_i}×\frac1{a_i+1}=\frac1{a_i}\)
\(a_i<a_{i+1}\),随机的答案在\(1\sim a_i\)中,\(i+1\)题正确答案有\(\frac{a_i}{a_{i+1}}\)概率,期望为\(\frac1{a_{i+1}}\)
综上,答案\(\large\sum\limits_{i=1}^n\frac1{\max(a_i,a_{i+1})}\)
\(t2:\)CF518D
也是假期望题,是个概率的
\(f_{i,j}\)表示第\(i\)个人,时间为\(j\)秒的期望人数,考虑是否上电梯
上,由\(f_{i-1,j-1}\)转移过来,概率为\(p\)
不上,由\(f_{i,j-1}\)转移过来,概率\(1-p\)
转移方程\(f_{i,j}=(1-p)×f_{i,j-1}+p×(f_{i-1,j-1}+1)\)
可以滚动数组
\(ans:f_{n,t}\)
\(t3:\)
反着\(dp\),\(f[i][j]\)表示考虑了\(i\)张红牌,\(j\)张黑牌的期望,\(f[i][j]=\frac i{i+j}×(f[i-1][j]+1)+\frac j{i+j}×(f[i][j-1]-1)\)
因为要考虑到停止翻牌这种情况. 和0取max即可.这样每一个状态就都是合法的了.
注意使用滚动数组!最后答案不进位要特殊处理
f[now][m] *= 1000000;
f[now][m] = floor(f[now][m]);
printf("%.6lf\n",f[now][m] / 1000000);
\(t4:\) POJ3071
\(f_{i,j}\)表示第\(i\)轮比赛,\(j\)号获胜的概率,枚举对手
\(f[i][j]+=f[i-1][j]*f[i-1][k]*p[j][k]\)
int n;
double p[N][N],f[10][N];
int main(){
while((~scanf("%d",&n)) && (~n)){
for(int i = 0;i < (1<<n);++i)
for(int j = 0;j < (1<<n);++j)
scanf("%lf",&p[i][j]);
memset(f,0,sizeof(f));
for(int i = 0;i < (1<<n);++i) f[0][i] = 1;
for(int i = 1;i <= n;++i)
for(int j = 0;j < (1<<n);++j)
for(int k = 0;k < (1<<n);++k)
if(((j >> (i-1))^1) == (k >> (i-1)))
f[i][j] += f[i-1][j]*f[i-1][k]*p[j][k];
double ans=0;
int idx = -1;
for(int i = 0;i < (1<<n);i++)
if(f[n][i] > ans){
ans = f[n][i];
idx = i+1;
}
printf("%d\n",idx);
}
t5:聪聪与可可
\(f_{x,y}\)表示聪当前在\(x\),可在\(y\),聪吃可的期望步数,\(nxt[x][y]\)表示当前聪在\(x\),可在\(y\),聪下一步到哪
求\(nxt[x][y]\):求出\(dis[x][y]\)表示从\(x\)到\(y\)的最短路,枚举找最小值
求\(f[x][y]\)可以记忆化搜索,边界为当\(x=y\)时\(f[x][y]=0=\),当\(x\)下一步或两步能到\(y\)时,\(f[x][y]=1\)
代码不贴了