期望屑题(更新中)

期望题

(t1:)单位错选

这题期望等于概率,值等于(1)

(a_i=a_{i+1}),随机答案在(i+1)也随机,期望为(largefrac 1 {a_{i+1}})

(a_i>a_{i+1}),只有(frac{a_{i+1}}{a_i})概率在(1sim a_{i+1})中,期望为(largefrac{a_{i+1}}{a_i}×frac1{a_i+1}=frac1{a_i})

(a_i<a_{i+1}),随机的答案在(1sim a_i)中,(i+1)题正确答案有(frac{a_i}{a_{i+1}})概率,期望为(frac1{a_{i+1}})

综上,答案(largesumlimits_{i=1}^nfrac1{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
",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
",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)

代码不贴了

原文地址:https://www.cnblogs.com/shikeyu/p/13752911.html