看到这道题想什么? 一个好转移的状态由于T最多444所以把每个点控制在O(400000)以内,所以对于n和r最多乘一次因此猜f[n][r],f[r][n],首先一轮一轮的搞不好转移,那么先想一想f[n][r],如果是从头开始,在转移到下一位的时候,前面的会对后面的有恶心的影响,那么倒着来f[i][j]=(1.0-p[i])j*f[i+1][j]+[1.0-(1.0-p[i])j*(f[i+1][j-1]+d[i]),

现在让我们分析一下呢我们用到了小数点后上百位而没有被卡精的秘诀(巧合),让我们分析状态的递进首先在最后一位,因为double 16 所以点前3点后13,那么由于乘法是和小数乘因此我们的精度不会有影响(最高位往后数17位正好是我们原本的限度),那么我们分析加法,当我们进位的时候当时不会有影响,其他时候会有影响,因为我们可以把每一个位置的所有状态视为同一精度,那么加法是两个同位相加,会影响往前一位,两位,甚至是3位,4位......就是从限度开始少进几,几十,甚至几百位,但是考虑随机数据,我们被卡8位当且仅当你是一个在逃罪犯...

#include<cstdio>
#include<cstring>
#include<iostream>
#define N 222
#define M 140
using namespace std;
typedef double D;
D p[N],t[N][M],f[N][M];
int n,r,d[N];
void Init()
{ scanf("%d%d",&n,&r);for(int i=1;i<=n;i++){scanf("%lf",&p[i]);scanf("%d",&d[i]);t[i][1]=1.0-p[i];for(int j=2;j<=r;j++)t[i][j]=t[i][j-1]*(1.0-p[i]);}for(int i=1;i<=r;i++)f[n][i]=(1.0-t[n][i])*d[n];
}
void work()
{for(int i=n-1;i>0;i--)for(int j=1;j<=r;j++)f[i][j]=t[i][j]*f[i+1][j]+(1.0-t[i][j])*(f[i+1][j-1]+d[i]);printf("%.10lf\n",f[1][r]);
}
int main()
{freopen("arthur.in","r",stdin);freopen("arthur.out","w",stdout);int T;scanf("%d",&T);while(T--){Init();work();}return 0;
}

转载于:https://www.cnblogs.com/TSHugh/p/7121199.html

BZOJ4008. [HNOI2015]亚瑟王 期望概率dp相关推荐

  1. 【BZOJ4008】亚瑟王,概率DP

    Time:2016.08.25 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 为啥概率题都这么恶心啊woc 一开始的时候想了两种DP方法,都不合适 主要原因是所有卡牌的触发概率和不 ...

  2. BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)

    4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Submit: 1627  Solved: ...

  3. 概率DP——BZOJ4008 [HNOI2015]亚瑟王

    [HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...

  4. 【文文殿下】[BZOJ4008] [HNOI2015] 亚瑟王

    题解 这是一个经典的概率DP模型 设\(f_{i,j}\)表示考虑到前\(i\)张牌,有\(j\)轮没打出牌的可能性,那么显然\(f_{0,r} = 1\). 考虑第\(i+1\)张牌,他可能在剩下的 ...

  5. P3239 [HNOI2015]亚瑟王(巧妙的概率dp)

    P3239 [HNOI2015]亚瑟王 乍一看很难下手,第iii张牌是否发动和前面的牌是否发动相关 但是我们发现每张牌最多只会发动一次 假设我们算出了g[i]g[i]g[i]表示第iii张牌在所有的r ...

  6. 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]

    亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description 小 K 不慎被 LL 邪教洗脑了, ...

  7. 期望/概率dp 学习报告

    期望dp 期望的基本性质 离散型随机变量和连续型随机变量 例题1:红包发红包 期望的基本运算性质 例题2:Little Pony and Expected Maximum 期望的一些经典题型 图上期望 ...

  8. [HNOI2015]亚瑟王

    题目描述 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游戏,技能 ...

  9. LightOJ - 1038 Race to 1 Again 基础期望概率 dp

    传送门 刚刚学习期望&概率 我们设数X的期望改变次数为P[X] 如果要求X的期望,很容易想到找x的因子; 可以得到下式  ,cnt为X因子个数,ai为X的因子 可以这么理解,当因子ai为1时, ...

最新文章

  1. 欧式聚类分割并可视化
  2. linux shell awk 中 printf 用法
  3. 【css】怎么让Chrome支持小于12px 的文字
  4. 【数据竞赛】十大重要的时间组合特征!
  5. Boost:形成const&到_1的测试程序
  6. 5.6 Column Attribute
  7. redux中间件的用法
  8. 分治法解决组合问题(递归)
  9. 信鸽 v3.0.9 安卓正式版
  10. HTML-表单table
  11. OV7670 FIFO 30W摄像头介绍(三) --- STM32F103驱动OV7670代码介绍
  12. 笔记本辐射与日常电器辐射对比
  13. C# Base64编码、AES等编码加、解密
  14. AngularJS学习笔记1
  15. 分页第一页用0还是1_计算机用0 和1刻画文字、图片和声音
  16. 青蛙过河程序及其解析
  17. 前端ui框架layui——layer弹出层-弹出框方法
  18. 取Json中的数组进行遍历
  19. 用产品思维设计API(三)——版本控制,没有你想的这么简单
  20. 华为OD机试题 - 相对开音节(JavaScript)| 含思路

热门文章

  1. java synchronized 参数_个人对synchronized锁的参数理解,如果有误望指出
  2. android应用内存分析,Android应用程序内存分析-Memory Analysis for Android Applications
  3. Git HEAD 意思详解 和版本回退
  4. PHP显示今天、今月、上月、今年的起点/终点时间戳
  5. 初面蚂蚁金服,java微积分第三方计算包
  6. java怎么运行class文件,面试必会
  7. 【深度学习】Transformer在语义分割上的应用探索
  8. 【编译原理】词法分析和语法分析两万字全总结(这知识它不进脑子啊~!)
  9. python【蓝桥杯vip练习题库】ADV-97十进制数转八进制数
  10. 科学计算机求角度数,科学计算器算角度