【期望DP】[zoj3329]One Person Game
题描:
有三个均匀的骰子,分别有k1,k2,k3个面,初始分数是0,
当掷三个骰子的点数分别为a,b,c的时候,分数清零,否则分数加上三个骰子的点数和,
当分数>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[]就可以啦
#include<bits/stdc++.h>
#define writeln(x) write(x),puts("")
#define writep(x) write(x),putchar(' ')
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}void write(int x){
if(x<) putchar('-'),x=-x;
if(x>) write(x/);
putchar(x%+'');
}const int M = ;
int k[M],q[M],n;
double P,p[M],a[M],b[M];
inline void Clear_All(){memset(a,,sizeof(a)),memset(b,,sizeof(b)),memset(p,,sizeof(p));}
int main(){
int T=read();
while(Clear_All(),T--){
n=read();
for(int i=;i<=;i++) k[i]=read();
for(int i=;i<=;i++) q[i]=read();
P=1.0/(k[]*k[]*k[]);
for(int i=;i<=k[];i++)
for(int j=;j<=k[];j++)
for(int w=;w<=k[];w++)
if(i!=q[]||j!=q[]||w!=q[])
p[i+j+w]+=P;
for(int i=n;i>=;i--){
a[i]=P,b[i]=;
for(int j=;j<=k[]+k[]+k[];j++)
a[i]+=a[i+j]*p[j],b[i]+=p[j]*b[i+j];
}printf("%.15lf\n",b[]/(-a[]));
}return ;
}
【期望DP】[zoj3329]One Person Game的更多相关文章
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 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]= ...
- HDU 4405 期望DP
期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ...
- POJ 2096 【期望DP】
题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ...
- ZOJ 3822 Domination 期望dp
Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...
- poj 2096 Collecting Bugs(期望 dp 概率 推导 分类讨论)
Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ...
- uva11600 状压期望dp
一般的期望dp是, dp[i] = dp[j] * p[j] + 1; 即走到下一步需要1的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都 ...
随机推荐
- ParameterizedThreadStart task
using System;using System.Diagnostics;using System.Threading;using System.Threading.Tasks; namespace ...
- 新建的maven项目里没有src
百度上搜到一个网友的一句话:没筷子你就不吃饭了是吧 若有所思 自己新建一个src文件 然后, 由于已经转换,因此上图没有sources选项 然后就可以在文件中随意编写文件 如果想添加package,直 ...
- 剑指offer——05重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- Unity中销毁游戏对象的方式
销毁方式 销毁物体的方式有两种:Destroy和DestroyImmediate两种,那两者有什么区别呢?细听分说. 两种方式都能达到销毁物体的目的,有以下区别: Destroy销毁场景中的物体但是内 ...
- Jmeter---参数化之用户参数
总结: 参数化几次就要设置几个线程,执行的时候,是按顺序执行,下面的请求也会跟着请求
- iOS组件化开发-CocoaPods简介
CocoaPods简介 任何一门开发语言到达一定阶段就会出现第三方的类库管理工具,比如Java的Maven.WEB的Webpack等.在iOS中类库的管理工具-CocoaPods. 利用CocoaPo ...
- sql (4) key and Join
新建表: "Persons" 表:Id_P LastName FirstName Address City1 Adams John Oxford Street London2 Bu ...
- Android开发 AndroidStudio解决Error:moudle not specified
问题描述 在使用Android Studio 进行Builder APKs的时候,如果发现无法degub, 进行配置的时候 没有module可以进行指定 问题原因 项目未与Grade Files 文件 ...
- Ubuntu Apache vhost不执行php小记
运行环境: Ubuntu : 16.04 PHP: 5.6.36 Apache: 2.4.18 出现/var/www/html 文件夹下的 php文件能够执行 vhost 配置文件的DocumentR ...
- drupal7权限控制之-如何访问未发表的node
在某些特殊需求的情况下,会涉及到匿名用户或非node节点所有者,访问未发表的node节点的需求:或者需要根据不同的用户角色,访问不同的内容类型等,如果不想安装node_access等模块的时候,可以在 ...