题意

你有三枚色子,第i个色子有ki面,你有一个计数器。

1.开始的时候将计数器调至0

2.扔三个色子,如果色子1是a,色子2是b,色子3是c,则将计数器归零。否则计数器加上三个色子的和。

3.如果计数器的数字大于等于n游戏结束,否则重复步骤

计算扔色子次数的期望

分析

通过带入系数解决概率DP问题。

f[i]为当前计数器的数字是i,到游戏结束的期望次数是多少。

f[i]=sum(f[i+k]*p)+1+f[0]*p。

因为f[0]就是我们所求的东西,所以我们令f[i]=A[i]*f[0]+B[i]

带入整理得f[i]=(sum(A[i+k]*p)+p)*f[0]+sum(p*B[i+k])+1

观察得到 A[i]=sum(p*A[i+k])+p

B[i]=sum(p*B[i+k])+1

ans=f[0]=B[0]/(1-A[0])

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream> using namespace std;
const int maxn=;
double A[maxn],B[maxn];
int T,n,K1,K2,K3,a,b,c; int main(){
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%d%d%d%d%d%d%d",&n,&K1,&K2,&K3,&a,&b,&c);
memset(A,,sizeof(A));
memset(B,,sizeof(B));
for(int i=;i<=n;i++){
for(int j=;j<=K1;j++){
for(int k=;k<=K2;k++){
for(int l=;l<=K3;l++){
if(j!=a||k!=b||l!=c){
int sum=j+k+l;
if(i-sum>=){
A[i]+=A[i-sum]*(double)/(K1*K2*K3);
B[i]+=B[i-sum]*(double)/(K1*K2*K3);
}
}
}
}
}
A[i]+=(double)/(K1*K2*K3);
B[i]+=;
}
double ans=B[n]/(-A[n]);
printf("%.15f\n",ans);
}
return ;
}

【ZOJ3329】One Person Game的更多相关文章

  1. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  3. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  5. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

  6. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  7. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

随机推荐

  1. Windows下安装Redis服务,修改查看密码,修改端口,常用命令

    一.安装 出自:https://jingyan.baidu.com/article/0f5fb099045b056d8334ea97.html 1.要安装Redis,首先要获取安装包.Windows的 ...

  2. 第06篇 MEF部件的生命周期(PartCreationPolicy)

    一.演示概述 本演示介绍了MEF的生命周期管理,重点介绍了导出部件的三种创建策略,分别是:CreationPolicy.Any.CreationPolicy.Shared.CreationPolicy ...

  3. HTML 按钮换肤

    .button2{ background-image: url(images/input-bg.jpg); width: 83px; height: 31px; border: none 0px; f ...

  4. [LeetCode系列]最大连续子列递归求解分析

    本文部分参考Discuss: LeetCode. 步骤1. 选择数组的中间元素. 最大子序列有两种可能: 包含此元素/不包含. 步骤2. 步骤2.1 如果最大子序列不包含中间元素, 就对左右子序列进行 ...

  5. CRC全套~~~ 转载

    经测试CRC16-CCITT是可以了,其它暂时没有测试哦. 00 0E 00 01 00 01 20 17 12 26 20 19 16 01 00 00 01 01 00 00 00 00 00 0 ...

  6. GNU Radio安装教程: Ubuntu14.04 + uhd3.10.0 + gnuradio3.7.10.1

    1. 更新和安装依赖项 在编译安装uhd和gnuradio之前,确保已安装所需依赖项.Ubuntu系统运行: sudo apt-get update 安装UHD和GNURadio所需依赖项: On U ...

  7. [欢乐赛]班服 状压DP

    班服 (shirt.pas/.c/.cpp) 时间限制:1s:内存限制 128MB 题目描述: 要开运动会了,神犇学校的n个班级要选班服,班服共有100种样式,编号1~100.现在每个班都挑出了一些样 ...

  8. python中包和模块的使用说明

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...

  9. USB驱动程序之概念介绍学习笔记

    现象:把USB设备接到PC 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能 ...

  10. 05——wepy框架中的一些细节

    1.wepy组件的编译 wepy中使用一个组件时候,需要先引用(import).再在需要使用该组件的页面(或组件)中声明.例如: import Counter from '/path/to/Count ...