题目大意:

给定3个已经规定好k1,k2,k3面的3个色子,如果扔到a,b,c则重新开始从1 计数,否则不断叠加所有面的数字之和,直到超过n,输出丢的次数的数学期望

我们在此令dp[]数组记录从当前数值到结束的数学期望

假如有3个面数都为2的色子

那么dp[i] = 1.0 / 2/2/2 * dp[0] + 1.0/8*dp[i+3] +3.0/8*dp[i+4]+3.0/8*dp[i+5]+1.0/8*dp[i+6] + 1

当然那些下标大于i的dp值均为0

可是我们这样从后往前推会导致无法计算dp[0]的数值,没法推

从新寻找规律,可以看做

dp[i] = a[i] * dp[0] + b[i]; 1式

dp[i] = p0 * dp[0] + ∑(dp[i+k]*p[k]) + 1; 2式

1式代人2式

dp[i] = p0*dp[0] + ∑((a[i+k]*dp[0]+b[i+k]))*p[k])+1

dp[i] =( p0+∑(a[i+k]*p[k])) dp[0] + ∑(b[i+k]*p[k]) +1

所以a[i] =p0+∑(a[i+k]*p[k])      b[i] = ∑(b[i+k]*p[k]) +1

这样我们由后往前推不断得到所有的a[i]和b[i]值

dp[0] = a[0]*dp[0]+b[0]

这样我们得到a[0],b[0]就很容易得到dp[0]的值了

这是这段叠加处求a,b数组的代码

memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=n;i>=0;i--){
            for(int j=3;j<=maxn;j++)
            {
                a[i]+=a[i+j] * pro[j];
                b[i]+=b[i+j] * pro[j];
            }
            a[i]+=1.0/k1/k2/k3;
            b[i]+=1;
        }

 #include <cstdio>
#include <cstring> using namespace std;
double pro[],a[],b[]; int main()
{
int n,k1,k2,k3,d,e,f,T;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d%d%d%d",&n,&k1,&k2,&k3,&d,&e,&f); int maxn = k1+k2+k3;
memset(pro,,sizeof(pro));
for(int i=;i<=k1;i++){
for(int j=;j<=k2;j++){
for(int k=;k<=k3;k++)
if(i!=d||j!=e||k!=f)
pro[i+j+k]++;
}
} for(int i=;i<=maxn;i++)
pro[i] = pro[i]*1.0/k1/k2/k3; memset(a,,sizeof(a));
memset(b,,sizeof(b));
for(int i=n;i>=;i--){
for(int j=;j<=maxn;j++)
{
a[i]+=a[i+j] * pro[j];
b[i]+=b[i+j] * pro[j];
}
a[i]+=1.0/k1/k2/k3;
b[i]+=;
} double ans = b[] / (-a[]);
printf("%.10f\n",ans);
}
}

ZOJ 3329 期望DP的更多相关文章

  1. zoj 3329 概率dp

    题意:有三个骰子,分别有k1,k2,k3个面.每个面值为1--kn每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和.当分数大于n时结束.求游戏的期望步数.初始分数为0 链接 ...

  2. poj 2096 Collecting Bugs && ZOJ 3329 One Person Game && hdu 4035 Maze——期望DP

    poj 2096 题目:http://poj.org/problem?id=2096 f[ i ][ j ] 表示收集了 i 个 n 的那个. j 个 s 的那个的期望步数. #include< ...

  3. poj 2096 , zoj 3329 , hdu 4035 —— 期望DP

    题目:http://poj.org/problem?id=2096 题目好长...意思就是每次出现 x 和 y,问期望几次 x 集齐 n 种,y 集齐 s 种: 所以设 f[i][j] 表示已经有几种 ...

  4. ZOJ 3822 Domination 期望dp

    Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...

  5. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  6. [NOIP2016]换教室 D1 T3 Floyed+期望DP

    [NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...

  7. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  8. 【BZOJ-4008】亚瑟王 概率与期望 + DP

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 832  Solved: 5 ...

  9. 期望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]= ...

随机推荐

  1. 导出数据库报错 EXP-00002: 写入导出文件时出错 EXP-00000: 导出终止失败

    解决方法: 1.检查磁盘所在空间是否够用. 2.磁盘修复下 排除故障考虑的地方要全面啊.

  2. php 静态绑定

    简介 编辑 后期静态绑定 从PHP 5.3.0开始,PHP增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类. 该功能从语言内部角度考虑被命名为”后期静态绑定“.”后期绑定“的意思是说 ...

  3. POJ 2002 Squares 数学 + 必须hash

    http://poj.org/problem?id=2002 只能说hash比二分快很多.随便一个hash函数都可以完爆二分. 判断是否存在正方形思路如下: 1.枚举任意两个点,作为正方形的一条边,那 ...

  4. Uncaught TypeError: Cannot set property 'f7View' of undefined 错误原因

    // 添加视图var mainView = myApp.addView('.view-main', { // 因为我们要用动态的导航栏,我们需要使它的这一观点: dynamicNavbar: true ...

  5. Android开发学习—— 消息机制

    ###主线程不能被阻塞* 在Android中,主线程被阻塞会导致应用不能刷新ui界面,不能响应用户操作,用户体验将非常差* 主线程阻塞时间过长,系统会抛出ANR异常* ANR:Application ...

  6. Java_JDBC连接数据库

    package com.accp.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pre ...

  7. hihocoder offer收割编程练习赛12 D 寻找最大值

    思路: 可能数据太水了,随便乱搞就过了. 实现: #include <iostream> #include <cstdio> #include <algorithm> ...

  8. VUE学习,is 特性,转载来源:https://segmentfault.com/q/1010000007205176/

  9. IPython notebook快捷键(Jupyter notebook)

    转自“https://blog.csdn.net/eswai/article/details/53642802” 本文整理了神器IPython Notebook(或Jupyter Notebook)的 ...

  10. Node.js——url模块

    url模块通过api可以将get提交的参数方便的提取出来