http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754

本题分数为0的概率不确定,所以不能从0这端出发.

设E[i]为到达成功所需的步数,明显i>n时E[i]=0,当0<i<=n时E[i]=sigma(E[i+k]*pk)+E[0]*p0,(k是可以投出的除了恰为a,b,c以外的骰子之和),

在这个公式里,E[i]和E[0]都是未知的,设E[0]=x,则

E[i]=sigma(E[i+k]*pk)+x*p0+1,

因为比i大的所有j,满足E[j]的一次项和零次项都是已知的,明显,可以用x来表示所有E[i],

设E[i]的一次项部分为a[i],常数项部分为b[i],逐渐递推,可以得到E[0]=a[0]*E[0]+b[0],这时E[0]可解出,即为答案

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=;
const int maxk=;
double p[maxk*],dpa[maxn],dpb[maxn];
int n,k1,k2,k3,a,b,c;
int sumk;
double mulk;
void init(){
sumk=k1+k2+k3;
mulk=k1*k2*k3;
memset(p,,sizeof(p));
p[]=/mulk;
for(int i=; i<=k1; i++)
{
for(int j=; j<=k2; j++)
{
for(int k=; k<=k3; k++)
{
if(i!=a||j!=b||k!=c){ p[i+j+k]+=/(mulk);} }
}
}
}
void calc(){
for(int i=n;i>=;i--){
dpa[i]=p[];
dpb[i]=;
for(int j=;j<=sumk&&i+j<=n;j++){
dpa[i]+=dpa[i+j]*p[j];
dpb[i]+=dpb[i+j]*p[j];
}
}
}
int main()
{
int T;
scanf("%d",&T);
for(int ti=; ti<=T; ti++)
{
scanf("%d%d%d%d%d%d%d",&n,&k1,&k2,&k3,&a,&b,&c);
init();
calc();
printf("%.15f\n",dpb[]/(-dpa[]));
} return ;
}

ZOJ 3329 One Person Game 概率DP 期望 难度:2的更多相关文章

  1. zoj 3329 One Person Game 概率DP

    思路:这题的递推方程有点麻烦!! dp[i]表示分数为i的期望步数,p[k]表示得分为k的概率,p0表示回到0的概率: dp[i]=Σ(p[k]*dp[i+k])+dp[0]*p0+1 设dp[i]= ...

  2. 2017 ICPC Asia Urumqi A.coins (概率DP + 期望)

    题目链接:Coins Description Alice and Bob are playing a simple game. They line up a row of nn identical c ...

  3. luogu P6835 概率DP 期望

    luogu P6835 概率DP 期望 洛谷 P6835 原题链接 题意 n + 1个节点,第i个节点都有指向i + 1的一条单向路,现在给他们添加m条边,每条边都从一个节点指向小于等于自己的一个节点 ...

  4. 概率dp+期望dp 题目列表(一)

    表示对概率和期望还不是很清楚定义. 目前暂时只知道概率正推,期望逆推,然后概率*某个数值=期望. 为什么期望是逆推的,例如你求到某一个点的概率我们可以求得,然后我们只要运用dp从1~n每次都加下去就好 ...

  5. zoj 3640 Help Me Escape 概率DP

    记忆化搜索+概率DP 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...

  6. zoj 3640 Help Me Escape (概率dp 递归求期望)

    题目链接 Help Me Escape Time Limit: 2 Seconds      Memory Limit: 32768 KB Background     If thou doest w ...

  7. hdu 3853 LOOPS(概率 dp 期望)

    Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help ...

  8. 简单概率dp(期望)-zoj-3640-Help Me Escape

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4808 题目大意: 有n条路,选每条路的概率相等,初始能力值为f,每 ...

  9. UVA 11427 (概率DP+期望)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35396 题目大意:每晚打游戏.每晚中,赢一局概率p,最多玩n局, ...

随机推荐

  1. HDU3247 AC自动机+dp

    题意:给出n个资源,m个病毒,将资源串拼接成一个串,必须包含所有的资源串,可以重叠,但是不能包含病毒,问最小的长度为多少 题解:所有串建AC自动机.对以资源串结尾的结点跑bfs,求出到其他资源串结尾的 ...

  2. (十)Linux内核中的常用宏container_of

    Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址. Containe ...

  3. form属性method="get/post

    form属性method="get/post"的两种方式对比 在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的.Form提供了两种数据传输的方式——g ...

  4. laravel 开启sql查询日志

    \DB::enableQueryLog(); dd(\DB::getQueryLog());

  5. commonJS — 数组操作(for Array)

    for Array github: https://github.com/laixiangran/commonJS/blob/master/src/forArray.js 代码 /** * Creat ...

  6. android 客户端 RSA加密 要注意的问题

    针对java后端进行的RSA加密,android客户端进行解密,结果是部分乱码的问题:注意两点,编码问题和客户端使用的算法问题 即:都使用UTF-8编码,Base64使用一致,另外,使用下面的代码在后 ...

  7. 抽象类中的抽象方法也是默认public的么(类似于interface)?

    测试下: public abstract class AbstractTest { abstract int printline(); } 在另一个package 设置 public class Ab ...

  8. 美国半个互联网瘫痪对开发者使用DNS的启发

    版权声明:本文由腾讯云DNSPod团队原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/174 来源:腾云阁 https:// ...

  9. robot API笔记4

    robot.htmldata包 包编写HTML格式的输出文件. 这个包被认为是稳定的但不是公共API的一部分. robot.htmldata.htmlfilewriter module classro ...

  10. Batman+joker乱谈

      偶然一天内两次看到关于希斯·莱杰的文章(上面这个joker),貌似很多地方看到过这个,但是为什么他这么出名.知乎上的一篇文章 http://daily.zhihu.com/story/434137 ...