神仙题,抄题解

用\(tp_i\)表示\(i\)这个技能在\(r\)轮中被使用过的概率

于是最后的答案就是\(\sum_{i=1}^nd_i*tp_i\)

首先\(tp_1=1-(1-p_1)^r\),也就是连续\(r\)轮都没有使用的概率

之后往下的\(tp\)靠\(dp\)来求

设\(dp_{i,j}\)表示在一共\(r\)轮里,前\(i\)个恰好有\(j\)个被发动的概率

那么

\[tp_i=1-\sum_{j=0}^rdp_{i-1,j}*(1-p_i)^{r-j}
\]

还是先算一下这个技能一直都没有发动的概率,如果前面有\(j\)个技能使用了,那么那对应的轮次是一定不会使用当前技能的,剩下的轮次,也就是\(r-j\)轮我们让其不发动就好了

之后是\(dp_{i,j}\)的转移

如果这一个技能并没有发动,那么就从\(dp_{i-1,j}\)转移过来

\[dp_{i,j}=dp_{i-1,j}*(1-p_i)^{r-j}
\]

如果这个技能发动了,那么就需要从前面的\(dp_{i-1,j-1}\)转移

\[dp_{i,j}=dp_{i-1,j-1}*(1-(1-p_i)^{r-j+1})
\]

我们还是先令技能\(i\)不发动,那么前面就会有\(r-j+1\)个轮次可能发动,我们都让其不发动,之后拿\(1\)减掉,就是发动的概率了

代码

#include<iostream>
#include<cstring>
#include<cstdio>
#define re register
#define maxn 225
#define min(a,b) ((a)<(b)?(a):(b))
double dp[maxn][maxn];
double p[maxn];
int d[maxn],n,T,m;
double tp[maxn];
inline double quick(double a,int b)
{
double S=1.0;
while(b) {if(b&1) S*=a;b>>=1,a*=a;}
return S;
}
int main()
{
scanf("%d",&T);
while(T--)
{
memset(dp,0,sizeof(dp));
memset(p,0,sizeof(p));
memset(tp,0,sizeof(tp)),
memset(d,0,sizeof(d));
scanf("%d%d",&n,&m);
for(re int i=1;i<=n;i++)
scanf("%lf%d",&p[i],&d[i]);
dp[1][0]=quick((1-p[1]),m);
dp[1][1]=1-dp[1][0];
tp[1]=dp[1][1];
for(re int i=2;i<=n;i++)
{
for(re int j=0;j<=min(i-1,m);j++)
tp[i]+=dp[i-1][j]*quick((1-p[i]),m-j);
tp[i]=1-tp[i];
for(re int j=0;j<=min(i,m);j++)
{
dp[i][j]=dp[i-1][j]*quick((1-p[i]),m-j);
if(j) dp[i][j]+=dp[i-1][j-1]*(1-quick((1-p[i]),m-j+1));
}
}
double ans=0;
for(re int i=1;i<=n;i++)
ans+=tp[i]*d[i];
printf("%.10lf",ans),putchar(10);
}
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. Android Studio中 图片资源存在但是运行时报错的问题

    最近看安卓遇到了了一个很头疼的问题,我明明在drawable文件夹中添加了图片资源,Android Studio 中也预加载了图片,但是在运行的时候就开始咔咔咔报错 = = 如下图所示: 图片后面显示 ...

  2. Guava学习笔记之Maps(1):Maps.uniqueIndex(Iterable, Function)

    Guava官方文档 https://github.com/google/guava/wiki/CollectionUtilitiesExplained 官方文档这样描述: [`Maps.uniqueI ...

  3. 后台数据校验-BeanCheck

    package com.ldf.domain; import java.text.ParseException; public class UserCheck { //从表单获取的数据 private ...

  4. mac mamp环境 PHP命令行反应缓慢解决

    在hosts增加下面两项即可. 原因:尝试执行DNS查找本地计算机的主机名的原因 raydeMacBook-Pro.local 就是你的MAC名称   127.0.0.1 raydeMacBook-P ...

  5. 03.CSS选择器-->交集并集选择器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. javascript变量的引用类型值

    JavaScript变量可以用来保存俩种类型的值:基本类型和引用类型值 前言 JS变量可以用来保存两种类型的值:基本类型值和引用类型值.基本类型的值源自一下5种基本数据类型:Underfined.Nu ...

  7. Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in

    学习php的命名空间,直接把手册的代码粘贴过来,却报错了:Fatal error: Namespace declaration statement has to be the very first s ...

  8. Linux 重置root密码

    1.首先输入:sudo passwd root(设置root密码) 2.输入当前系统的账户密码(账户:my的密码) 3.输入新的root密码,确认新 4.密码,密码更新成功 5.在提示符处输入:su按 ...

  9. Spring Data MongoDB 分页查询

    在上篇文章 Spring Data MongoDB 环境搭建 基础上进行分页查询 定义公用分页参数类,实现 Pageable 接口 import java.io.Serializable; impor ...

  10. MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档)

    原文:http://download.csdn.net/download/jobfind/9559162 MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档).rar