【期望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的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都 ...
随机推荐
- ETL详解
ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...
- NX二次开发-UFUN输入对象tag获得part名字UF_OBJ_ask_owning_part
NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_part.h> #include < ...
- [JZOJ 5819] 大逃杀
题意:求一个树上背包~~ 先贴代码存一下,好像打挂了. #include <bits/stdc++.h> using namespace std; const int maxn = 400 ...
- CPUID 指令的使用
使用 CPUID 指令可以从 processor 厂商里获得关于 processor 的详细信息,CPUID 指令是从 Intel 486 处理器以后开始加入支持. 1. 检测处理器是否支持 cpui ...
- ionic:ionic 教程
ylbtech-ionic:ionic 教程 1.返回顶部 1. ionic 教程 ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framew ...
- Python实现二叉堆
Python实现二叉堆 二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树).二叉堆有两种:最大堆和最小堆.最大堆:父结点的键值总是大于或等于任何一个子节点的键值:最小堆: ...
- 关于DEBUG的一点体会
目录 1. 看待问题 2. 为什么要debug 3. 我理解的问题定位能力 4. debug能力模型的4个层级 5. 小结与扩展 1. 看待问题 遇到更高级的bug,解决更重要的问题,是开发同学的迭代 ...
- CSS3新属性之---flex box布局实例
flex box布局实例 flex的强大之处在于不管什么布局,几行命令即可实现 /*本节模板div元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目.如果有多个项目,就要 ...
- CSIC_716_20191109【函数的语法,以及函数的分类,可变长参数*args】
函数 定义.作用.及使用方式 函数是一种工具,可以被重复调用. 使用函数可精简重复代码,减少冗余,增加代码的可读性. 函数要先构造函数,然后调用函数. 构造及调用函数的语法结构 关键字def 函数名 ...
- 校园商铺-2项目设计和框架搭建-6逐层完成SSM的各项配置
1. 创建/src/main/resources/jdbc.properties文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://l ...