题描:

  1. 有三个均匀的骰子,分别有k1,k2,k3个面,初始分数是0
  2. 当掷三个骰子的点数分别为a,b,c的时候,分数清零,否则分数加上三个骰子的点数和,
  3. 当分数>n的时候结束。求需要掷骰子的次数的期望。

令f[i]为当前三个骰子点数和为i时掷骰子期望次数

则易有:(逆推)

$$f[i]=\sum({p[k]*f[i+k]})+f[0]*P_0+1$$

然而这是逆推...

咱并不知道$f[0]$的值

凉了

吗?

注意到求$f[i]$时跟它有关的所有f[k]中只有f[0]是未知的,那我们就把这玩意儿当做未知数

列方程:

令$f[i]=A_i*f[0]+B_i$(①),则有:

$$f[i+k]=A_{i+k}*f[0]+B_{i+k}$$

代入①式有:

$$f[i]=\sum[p[k]*(A_{i+k}*f[0]+B_{i+k})]+f[0]*P_0+1$$

(②)

(p[k]表示三个骰子掷出和为k时的概率)

变形得:

$$f[i]=[\sum(p[k]*A_{i+k})+P_0]*f[0]+\sum(p[k]*B_{i+k})+1$$

(③)

这样就能发现③式与①式的形式已经大致相同了.

综上:

$$A_i= \sum(p[k]*A_{i+k})+P_0$$

$$B_i=\sum(p[k]*B_{i+k})+1$$

令:$i=0$

有:

$$f[0]=A_0*f[0]+B_0$$

综上:$$f[0]=\frac{B_0}{1-A_0}$$

而f[0]就是我们最后要求的答案

所以我们只需要求a[]和b[]就可以啦

  1. #include<bits/stdc++.h>
  2. #define writeln(x) write(x),puts("")
  3. #define writep(x) write(x),putchar(' ')
  4. using namespace std;
  5. inline int read(){
  6. int ans=,f=;char chr=getchar();
  7. while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
  8. while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
  9. return ans*f;
  10. }void write(int x){
  11. if(x<) putchar('-'),x=-x;
  12. if(x>) write(x/);
  13. putchar(x%+'');
  14. }const int M = ;
  15. int k[M],q[M],n;
  16. double P,p[M],a[M],b[M];
  17. inline void Clear_All(){memset(a,,sizeof(a)),memset(b,,sizeof(b)),memset(p,,sizeof(p));}
  18. int main(){
  19. int T=read();
  20. while(Clear_All(),T--){
  21. n=read();
  22. for(int i=;i<=;i++) k[i]=read();
  23. for(int i=;i<=;i++) q[i]=read();
  24. P=1.0/(k[]*k[]*k[]);
  25. for(int i=;i<=k[];i++)
  26. for(int j=;j<=k[];j++)
  27. for(int w=;w<=k[];w++)
  28. if(i!=q[]||j!=q[]||w!=q[])
  29. p[i+j+w]+=P;
  30. for(int i=n;i>=;i--){
  31. a[i]=P,b[i]=;
  32. for(int j=;j<=k[]+k[]+k[];j++)
  33. a[i]+=a[i+j]*p[j],b[i]+=p[j]*b[i+j];
  34. }printf("%.15lf\n",b[]/(-a[]));
  35. }return ;
  36. }

【期望DP】[zoj3329]One Person Game的更多相关文章

  1. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  2. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  3. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  4. 【BZOJ-4008】亚瑟王 概率与期望 + DP

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 832  Solved: 5 ...

  5. 期望dp BZOJ3450+BZOJ4318

    BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ...

  6. HDU 4405 期望DP

    期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ...

  7. POJ 2096 【期望DP】

    题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ...

  8. ZOJ 3822 Domination 期望dp

    Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...

  9. poj 2096 Collecting Bugs(期望 dp 概率 推导 分类讨论)

    Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ...

  10. uva11600 状压期望dp

    一般的期望dp是, dp[i] = dp[j] * p[j] + 1; 即走到下一步需要1的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都 ...

随机推荐

  1. ARC032 D - アットコーダーモンスターズ

    https://arc032.contest.atcoder.jp/tasks/arc032_4# 切比雪夫距离,放在3000*3000的平面上, 一个集合就是恰好包含这个集合的矩形,价值是矩形长.宽 ...

  2. (转)虚拟IP原理

    转:http://blog.csdn.net/whycold/article/details/11898249 高可用性HA(High Availability)指的是通过尽量缩短因日常维护操作(计划 ...

  3. Flex birdeye笔记

    1.将官网示例demo运行起来 新建Flex项目,直接将官网src下的demo拷贝到新建的项目的src下  .将官网example-binaries目录下的文件拷贝到新建项目的bin-debug下即可 ...

  4. IAsyncResult

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. ActiveMQ 反序列化漏洞(CVE-2015-5254)

    java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 192. ...

  6. 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll已解决

    问题 : 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll 解决 1, 首先把C:\Windows\SysWOW64\的api-ms-win-crt- ...

  7. Android代号、版本及API级别之间的对应关系

    参考链接:Codenames, Tags, and Build Numbers  |  Android Open Source Project

  8. STM32---初学者用库函数好还是直接对寄存器操作比较好

    引用:http://blog.csdn.net/u010349006/article/details/416 首先,两个都是C语言.从51过渡过来的话,就先说寄存器操作.每个MCU都有自己的寄存器,5 ...

  9. Nginx软件模块说明

    Nginx软件模块说明 Nginx常用模块 注:以下只是列举Nginx常用模块,需要详细了解更多模块可以登录Nginx官方网站查看 功能模块 模块说明 ngx_http_core_module 包含一 ...

  10. 关于UIPageViewController去除边缘点击手势

    如果page上方还有一层UI控件的话,不去除边缘点击手势会造成手势的冲突干扰. 首先我做的处理是设置pageView的手势代理 for (UIGestureRecognizer *gr in _pag ...