lightoj 1030

来源:互联网 发布:ubuntu用户组权限设置 编辑:程序博客网 时间:2024/06/08 09:05

题意:

抛掷一个骰子,前进面朝上的点数,最后剩余不足六个的时候必须使得点数满足,不然重新抛掷,每个格子里都有黄金,问最后到达终点,获得黄金的期望、
思路:
像写概率dp那样,

n= min(6,n-i);

for(j:1~n)

p[ i+j ]+=(1/n)*p[i];

再每个黄金乘以自己的概率

#include<stdio.h>#include<string.h>double b[1000];int main(){int t,n,a,p;int k=1;double ans=0;scanf("%d",&t);while(t--){scanf("%d",&n);ans=0;memset(b,0,sizeof(b));b[1]=1.0;for(int i=1;i<=n;i++){scanf("%d",&a);ans+=(a*b[i]);if(i+6>n) p=n-i;else p=6;for(int j=1;j<=p;j++)b[i+j]+=b[i]*(1.0/(p*1.0));}printf("Case %d: %.6lf\n",k++,ans);}return 0;}




原创粉丝点击