期望屑题(更新中)

期望题

\(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\)

代码不贴了

posted @ 2020-09-30 09:02  INFP  阅读(108)  评论(0编辑  收藏  举报