【期望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的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都 ...
随机推荐
- NX二次开发-UFUN写入本地文本文档uc4524
1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_cfi.h> 5 #include <uf_ui.h> 6 7 us ...
- R语言中动态安装库
R语言中动态安装库 在一个R脚本中,我们使用了某些library,但是发现运行环境中没有这个library,如果能检测一下有没有这个包,没有就自动安装该多好.而R中非常方便地支持这些,只要联网. 代码 ...
- Java-Class-@I:org.springframework.validation.annotation.Validated
ylbtech-Java-Class-@I:org.springframework.validation.annotation.Validated 1.返回顶部 2.返回顶部 1. package ...
- LeetCode 620. Not Boring Movies (有趣的电影)
题目标签: 题目给了我们一个 cinema 表格, 让我们找出 不无聊的电影,并且id 是奇数的,降序排列. 比较直接简单的,具体看code. Java Solution: Runtime: 149 ...
- 面试总结【css篇】- 盒子模型
题目:谈谈你对CSS盒模型的认识 (1) 基本概念:标准模型+IE模型 (2) 标准模型和IE模型区别 标准模型和IE模型的区别,就是宽度和高度的计算方式不同. 标准模型的宽度指的就是conten ...
- 转Git仓库分支(Branch)和标签(Tag)
仓库的分支(Branch)规范,影响到每个团队的工作流的一致性:标签(Tag)便于开发团队.测 试团队和其他团队识别每个项目的版本,特别是在协同处理线上问题的时候,大家可以非常清楚 地知道线上运行版本 ...
- shell 命令 文件查看ls,复制cp,移动mv,查看文件内容cat more less,查看文件信息 file
1. 查看文件 ls ls -l 查看文件详细信息 ls -a 查看所有文件(包含隐藏文件) ls -lh 带单位显示文件大小 ls -i 查看文件的节点号(相当身份证唯一) 2 ...
- Python学习笔记(一)——输入与输出
输出:——print() Python中的输出使用print()完成 >>> 在屏幕中输出Hello World >>> print('Hello World') ...
- redis笔记_源码_字典dict
参考:https://redissrc.readthedocs.io/en/latest/datastruct/dict.html Expand: 条件: 新的table 大小: Rehash: 条件 ...
- 校园商铺-2Logback配置与使用-3验证配置
1. 验证logback配置 1.1. 启动tomcat,得到CATALINA_BASE地址: 1.2 访问接口,查看日志 浏览器打开http://localhost:18080/o2o/supera ...