zoj 3329 概率dp
转自:https://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html
题目大意:
有三个骰子,分别有k1,k2,k3个面。每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。当分数大于n时结束。求游戏的期望步数。初始分数为0。
基本思路:
设dp[i]表示达到i分时到达目标状态的期望,pk为投掷k分的概率,p0为回到0的概率
则dp[i]=∑(pk*dp[i+k])+dp[0]*p0+1;
都和dp[0]有关系,而且dp[0]就是我们所求,为常数
设dp[i]=A[i]*dp[0]+B[i];
代入上述方程右边得到:
dp[i]=∑(pk*A[i+k]*dp[0]+pk*B[i+k])+dp[0]*p0+1
=(∑(pk*A[i+k])+p0)dp[0]+∑(pk*B[i+k])+1;
明显A[i]=(∑(pk*A[i+k])+p0)
B[i]=∑(pk*B[i+k])+1
先递推求得A[0]和B[0].
那么 dp[0]=B[0]/(1-A[0]);
代码如下:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;double A[600],B[600];
double p[100];
int main()
{int T;int k1,k2,k3,a,b,c;int n;scanf("%d",&T);while(T--){scanf("%d%d%d%d%d%d%d",&n,&k1,&k2,&k3,&a,&b,&c);double p0=1.0/k1/k2/k3;memset(p,0,sizeof(p));for(int i=1;i<=k1;i++)for(int j=1;j<=k2;j++)for(int k=1;k<=k3;k++)if(i!=a||j!=b||k!=c)p[i+j+k]+=p0;memset(A,0,sizeof(A));memset(B,0,sizeof(B));for(int i=n;i>=0;i--){A[i]=p0;B[i]=1;for(int j=1;j<=k1+k2+k3;j++){A[i]+=A[i+j]*p[j];B[i]+=B[i+j]*p[j];}}printf("%.16lf\n",B[0]/(1-A[0]));}return 0;
}
转载于:https://www.cnblogs.com/imzscilovecode/p/7967124.html
zoj 3329 概率dp相关推荐
- zoj 3640 概率dp
题意: 一只吸血鬼,有n条路给他走,每次他随机走一条路, 每条路有个限制,如果当时这个吸血鬼的攻击力大于 等于某个值,那么就会花费t天逃出去,否则,花费1天 的时间,并且攻击力增加,问他逃出去的期望 ...
- 【原创】概率DP总结 by kuangbin
概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...
- 关于概率dp的个人理解与总结
原文来自:http://blog.csdn.net/wdcjdtc/article/details/38424029 首先,概率dp主要解决的是关于概率问题和期望问题的求解. 难点和普通dp一样在于d ...
- 2018.09.01 poj3071Football(概率dp+二进制找规律)
传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...
- Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]
题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...
- poj 3071 Football(概率dp)
http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率.n次比赛的流程像这样France ...
- HDU 5001 概率DP || 记忆化搜索
2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP 測 ...
- hdu 3853 LOOPS 概率DP
简单的概率DP入门题 代码如下: 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 ...
- HDU - 4035 Maze(概率dp)
题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i ] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ...
最新文章
- 作业二:了解流行的软件
- db2 日期加减一天_常用SQL系列之(八):列值累计、占比、平均值以及日期运算等...
- 如何构建一个分布式爬虫:理论篇
- Water-Net:水下图像增强基准数据集(UIEB Dataset)2019年TIP顶刊论文
- java 获取服务器网络名_java-siger java使用siger 获取服务器硬件信息(CPU 内存 网络 io等) - 下载 - 搜珍网...
- PDF签名系列(1):PDF签名机制的漏洞分析
- abap数据类型转换_ABAP 中JSON格式的转换与解析
- 自定义View-实现简易车速器(真的够简易)
- 活灵活现用 Git --技巧篇
- 在linux下安装mplayer和解码器
- 选择正确的C/C++ runtime library
- 七种常用数据分析方法
- 毕业设计3-BME280温湿度大气压传感器调试记录(STM32F103C8T6 + STM32CubeMX + BME280)
- NYOJ-366:D的小L
- wps转换成word如何实现?不妨试试这两个小技巧
- MEM/MBA英语基础(07)复合句-定语从句
- 城市信息学其四—城市新陈代谢
- STEAM游戏高主频i9-12900k 搭建CS:GO服务器
- [LeetCode] Sqrt(int x)解题报告之无限逼近(牛顿法)
- win10内存占用率过高怎么办_8GB内存竟不够用了?卸载预装软件帮你腾出更多内存空间!...