题面

题解

考虑进行\(dp\)。

设\(f[i][j]\)表示前\(i\)张卡中有\(j\)张被触发的概率。

我们可以知道第\(i\)张卡不被触发的概率为\((1 - p_i) ^ {r - j}\),因为一共会考虑\(r - j\)次,每次都没有触发。

所以被触发的概率为\(1 - (1 - p_i) ^ {r - j + 1}\)。

于是\(f[i][j] = f[i - 1][j] \times (1 - p_i) ^ {r - j} + f[i - 1][j - 1] \times (1 - (1 - p_i) ^ {r - j + 1})\)。

同样,设\(g[i][j]\)表示期望,类似地进行转移即可。

代码

#include<cstdio>
#include<cctype>
#define RG register inline int read()
{
int data = 0, w = 1; char ch = getchar();
while(ch != '-' && (!isdigit(ch))) ch = getchar();
if(ch == '-') w = -1, ch = getchar();
while(isdigit(ch)) data = data * 10 + (ch ^ 48), ch = getchar();
return data * w;
} const int maxn(230), maxm(150);
double f[maxn][maxm], g[maxn][maxm], p[maxn], Pow[maxn][maxm];
int n, r, d[maxn], T; int main()
{
T = read(); f[0][0] = 1;
while(T--)
{
n = read(), r = read();
for(RG int i = 1; i <= n; i++) scanf("%lf%d", p + i, d + i);
for(RG int i = 1; i <= n; i++) Pow[i][0] = 1, f[i][0] = g[i][0] = 0;
for(RG int i = 1; i <= n; i++)
for(RG int j = 1; j <= r; j++)
f[i][j] = g[i][j] = 0, Pow[i][j] = Pow[i][j - 1] * (1 - p[i]);
for(RG int i = 1; i <= n; i++)
for(RG int j = 0; j <= r && j <= i; j++)
{
f[i][j] += f[i - 1][j] * Pow[i][r - j];
g[i][j] += g[i - 1][j] * Pow[i][r - j];
if(j) f[i][j] += f[i - 1][j - 1] * (1 - Pow[i][r - j + 1]),
g[i][j] += (g[i - 1][j - 1] + d[i] * f[i - 1][j - 1]) *
(1 - Pow[i][r - j + 1]);
}
double ans = 0;
for(RG int i = 0; i <= r; i++) ans += g[n][i];
printf("%.10lf\n", ans);
}
return 0;
}

【HNOI2015】亚瑟王的更多相关文章

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

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

  2. BZOJ 4008: [HNOI2015]亚瑟王( dp )

    dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率. 考虑第i+1张牌: 发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j) 没发动的概率 : dp(i, j) ...

  3. 【BZOJ4008】[HNOI2015]亚瑟王(动态规划)

    [BZOJ4008][HNOI2015]亚瑟王(动态规划) 题面 BZOJ 洛谷 题解 设\(f[i][j]\)表示前\(i\)张卡中有\(j\)张被触发的概率. 分两种情况转移,即当前这张是否被触发 ...

  4. [洛谷 P3239] [HNOI2015]亚瑟王

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

  5. 4008: [HNOI2015]亚瑟王

    4008: [HNOI2015]亚瑟王 链接 分析: 根据期望的线性性,直接求出每张牌出现的概率,最后乘以攻击力就是答案. 每张牌出现的概率只与它前面的牌有关,与后面的没有关系,于是按顺序考虑每张牌. ...

  6. Luogu_3239 [HNOI2015]亚瑟王

    Luogu_3239 [HNOI2015]亚瑟王 vim-markdown 真好用 这个题难了我一下午 第一道概率正而八经\(DP\),还是通过qbxt讲解才会做的. 发现Sengxian真是个dal ...

  7. 【BZOJ4008】[HNOI2015]亚瑟王

    [BZOJ4008][HNOI2015]亚瑟王 题面 bzoj 洛谷 题解 由期望的线性性 可以知道,把所有牌打出的概率乘上它的伤害加起来就是答案 记第$i$张牌打出的概率为$fp[i]$ 则 $$ ...

  8. bzoj[HNOI2015]亚瑟王 - 递推与动规 - 概率与期望

    [bzoj4008][HNOI2015]亚瑟王 2015年4月22日3,2991 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之 ...

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

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

  10. Bzoj4008 [HNOI2015]亚瑟王

    Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special Judge Submit: 1009  Solved: 605[Submit][Status] ...

随机推荐

  1. mongodb存储引擎

    存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引 ...

  2. 细说C#继承

    简介 继承(封装.多态)是面向对象编程三大特性之一,继承的思想就是摈弃代码的冗余,实现更好的重用性. 继承从字面上理解,无外乎让人想到某人继承某人的某些东西,一个给一个拿.这个语义在生活中,就像 家族 ...

  3. 数据库复制 Nacicate Premium

    之前都是“备份-还原”,抑或“导出-导入”.今天在将SqlServer中的数据导入到MySql中时发现了一个非常方便的方法,无需任何繁琐的配置和操作.废话少说,进入正题: 工具:Navicat Pre ...

  4. Oracle 18c新特性一览

    1. 一般新特性 1.1. Shadow Lost Write Protection Shadow lost write protection检测到一个丢失的写,它会导致一个主要的数据损坏.可以在不需 ...

  5. 用字典给Model赋值并支持map键值替换

    用字典给Model赋值并支持map键值替换 这个是昨天教程的升级版本,支持键值的map替换. 源码如下: NSObject+Properties.h 与 NSObject+Properties.m / ...

  6. [翻译] USING GIT IN XCODE [6] 在XCODE中使用GIT[6]

    USING GIT IN XCODE KEEPING IN SYNC WITH REMOTE REPOSITORIES As you make changes in your local workin ...

  7. UIImagePickerController按钮的中文问题

    UIImagePickerController按钮的中文问题 执行以下两步即可 1. 在targets中设置region为China 2. 在project中添加支持中文  

  8. Celery学习---Celery 与django结合实现计划任务功能

    项目的目录结构: 项目前提: 安装并启动Redis 安装Django和Celery的定时任务插件 安装方法一: pip直接安装[安装了pip的前提下] omc@omc-virtual-machine: ...

  9. IM——技术方案

    一. 即时通讯技术方案 1. 第三方SDK: 环信, 融云, 网易云信, 腾讯 中小型公司/初创型: 建议使用第三方. 好处: 快, 符合快速开发的需求, 自己和后台人员不需要做什么操作 缺点: 你的 ...

  10. PHP类的静态(static)方法和静态(static)变量使用介绍

    PHP类的静态(static)方法和静态(static)变量使用介绍,学习php的朋友可以看下     在php中,访问类的方法/变量有两种方法: 1. 创建对象$object = new Class ...