博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求期望 ZOJ 3329 One Person Game
阅读量:5111 次
发布时间:2019-06-13

本文共 1775 字,大约阅读时间需要 5 分钟。

题意:有三个骰子,分别有k1,k2,k3个面。

每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。
当分数大于n时结束。求游戏的期望步数。初始分数为0

思路: 本题通过代换系数,化简后求系数。

博客:http://www.cnblogs.com/jackge/archive/2013/05/21/3091839.html

  1. /** 
  2.     dp求期望的题。 
  3.     题意: 
  4.     有三个均匀的骰子,分别有k1,k2,k3个面,初始分数是0, 
  5.     当掷三个骰子的点数分别为a,b,c的时候,分数清零,否则分数加上三个骰子的点数和, 
  6.     当分数>n的时候结束。求需要掷骰子的次数的期望。 
  7.     题解: 
  8.     设 E[i]表示现在分数为i,到结束游戏所要掷骰子的次数的期望值。 
  9.     显然 E[>n] = 0; E[0]即为所求答案; 
  10.     E[i] = ∑Pk*E[i+k] + P0*E[0] + 1; (Pk表示点数和为k的概率,P0表示分数清零的概率) 
  11.     由上式发现每个 E[i]都包含 E[0],而 E[0]又是我们要求的,是个定值。 
  12.     设 E[i] = a[i]*E[0] + b[i]; 
  13.     将其带入上面的式子: 
  14.     E[i] = ( ∑Pk*a[i+k] + P0 )*E[0] + ∑Pk*b[i+k] + 1; 
  15.     显然, 
  16.     a[i] = ∑Pk*a[i+k] + P0; 
  17.     b[i] = ∑Pk*b[i+k] + 1; 
  18.     当 i > n 时: 
  19.     E[i] = a[i]*E[0] + b[i] = 0; 
  20.     所以 a[i>n] = b[i>n] = 0; 
  21.     可依次算出 a[n],b[n]; a[n-1],b[n-1] ... a[0],b[0]; 
  22.     则 E[0] = b[0]/(1 - a[0]); 
  23. **/
    #include
    #include
    #include
    #include
    #include
    using namespace std;double p[20],x[520],y[520];int main(){ int t; scanf("%d",&t); while(t--) { int n,k1,k2,k3,a,b,c; scanf("%d%d%d%d%d%d%d",&n,&k1,&k2,&k3,&a,&b,&c); double p0=1.0/k1/k2/k3; int tot=k1+k2+k3; memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); memset(p,0,sizeof(p)); for(int i=1;i<=k1;i++) for(int j=1;j<=k2;j++) for(int z=1;z<=k3;z++) { if(i!=a||j!=b||z!=c) { p[i+j+z]+=p0; } } for(int i=n;i>=0;i--) { for(int k=1;k<=tot;k++) { x[i]+=x[i+k]*p[k]; y[i]+=y[i+k]*p[k]; } x[i]+=p0; y[i]+=1; } printf("%.15f\n",y[0]/(1.0-x[0])); } return 0;}

     

转载于:https://www.cnblogs.com/Twsc/p/6705776.html

你可能感兴趣的文章
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
C#网络爬虫
查看>>
CentOS 6及7 丢失root密码解决方案
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
用PowerShell脚本删除SharePoint 的 Page中的WebPart
查看>>
VMware网络设置
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
工作中的优化之数字键盘优化
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
shell之文本过滤(grep)
查看>>
【BZOJ-2142】礼物 拓展Lucas定理
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
jQuery Mobile笔记
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
vue组件之间的引用
查看>>
【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash
查看>>
Linux目录规范和含义(转)
查看>>
【转载】几张图轻松理解String.intern()
查看>>