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

题面

BZOJ

洛谷

题解

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

分两种情况转移,即当前这张是否被触发。

不被触发的概率是\(\displaystyle (1-p[i])^{r-j}\),即一共会考虑\(r-j\)次,每次都不被触发。

被触发的概率呢?拿不被触发的概率减一下就好了也就是\(1-(1-p[i])^{r-j+1}\)。

所以得到转移:\(\displaystyle f[i][j]=f[i-1][j]*(1-p[i])^{r-j}+f[i-1][j-1]*(1-(1-p[i])^{r-j+1})\)。

这样是概率,考虑怎么算期望,显然期望当且仅当一张卡被选择到的时候才会计算,那么额外开一个数组\(g[i][j]\),含义同\(f\),改概率为期望,转移的时候额外考虑一下期望的转移就好了。

#include<iostream>
#include<cstdio>
using namespace std;
double f[222][135],g[222][135],p[222],pw[222][135];
int n,r,d[222];
int main()
{
int T;scanf("%d",&T);f[0][0]=1;
while(T--)
{
scanf("%d%d",&n,&r);
for(int i=1;i<=n;++i)scanf("%lf%d",&p[i],&d[i]);
for(int i=1;i<=n;++i)pw[i][0]=1,f[i][0]=g[i][0]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=r;++j)
f[i][j]=g[i][j]=0,pw[i][j]=pw[i][j-1]*(1-p[i]);
for(int i=1;i<=n;++i)
for(int j=0;j<=r&&j<=i;++j)
{
f[i][j]+=f[i-1][j]*pw[i][r-j],g[i][j]+=g[i-1][j]*pw[i][r-j];
if(j)f[i][j]+=f[i-1][j-1]*(1-pw[i][r-j+1]),g[i][j]+=(g[i-1][j-1]+d[i]*f[i-1][j-1])*(1-pw[i][r-j+1]);
}
double ans=0;for(int i=0;i<=r;++i)ans+=g[n][i];
printf("%.10lf\n",ans);
}
return 0;
}

【BZOJ4008】[HNOI2015]亚瑟王(动态规划)的更多相关文章

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

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

  2. Bzoj4008 [HNOI2015]亚瑟王

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

  3. BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)

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

  4. BZOJ4008: [HNOI2015]亚瑟王(期望dp)

    Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 1952  Solved: 1159[Submit][Status] ...

  5. BZOJ4008 [HNOI2015]亚瑟王 【概率dp】

    题目链接 BZOJ4008 题解 要求所有牌造成伤害的期望,就是求每一张牌发动的概率\(g[i]\) 我们发现一张牌能否发动,还与其前面的牌是否发动有关 那我们设\(f[i][j]\)表示前\(i\) ...

  6. bzoj4008: [HNOI2015]亚瑟王【期望dp】

    一个特别神奇的dp,特别厉害. f(i, j) 表示 有 j 轮发动技能的牌在 [1, i] 另外的m - j轮在[i + 1, n]之间的概率. 怎么转移呢? 首先考虑i这张牌不选的情况,f(i - ...

  7. BZOJ4008 : [HNOI2015]亚瑟王(期望dp)

    题意 略(看了20min才看懂...) 题解 我一开始天真地一轮轮推期望,发现根本不好算... 唉~ 不会做就只能抄题解咯 看了一波DOFY大佬的解法qwq 发现有句神奇的话 记住,期望要倒着推... ...

  8. bzoj4008: [HNOI2015]亚瑟王 dp

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4008 思路 神仙啊 \(f[i][j]表示第i个点有j次机会(不管成功与否)\) \(f ...

  9. 2018.10.13 bzoj4008: [HNOI2015]亚瑟王(概率dp)

    传送门 马上2点考初赛了,心里有点小紧张. 做道概率dp压压惊吧. 话说这题最开始想错了. 最开始的方法是考虑f[i][j]f[i][j]f[i][j]表示第iii轮出牌为jjj的概率. 然后用第ii ...

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

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

随机推荐

  1. iOS开发之线程组解决请求多个接口数据,完成后,再刷新界面

    1.多任务请求接口,完成后,在刷新数据,常用方法 2018年07月18日 16:34:38 hbblzjy 阅读数:1382 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  2. python札记

    进制转换 num = "0011"v = int(num, base=16)print(v)2->16

  3. JUnit的配置及使用

    一.安装插件JUnitGenertor V2.0 File->Setting->Plugins->在搜索框里输入JUintGenerator V2.0 二.导入JUnit相关jar包 ...

  4. html,css学习实践总结

    网页的布局方式 1.什么是网页的布局方式? 网页的布局方式其实就是指浏览器是如何对网页中的元素进行排版的 1.标准流(文档流/普通流)排版方式 1.1其实浏览器默认的排版方式就是标准流的排版方式 1. ...

  5. IdentityServer4【Topic】之保护APIs

    Protecting APIs 保护api 默认情况下IdentityServer将access token发布成JWT(json web token)格式的. 现在,每个相关的平台都支持验证JWT令 ...

  6. Oracle RMAN备份与还原

    RMAN在数据库服务器的帮助下实现数据库文件.控制文件.数据库文件与控制文件的映像副本.归档日志文件.数据库服务器参数文件的备份. RMAN的特点: (1) 支持增量备份:传统的exp与expdp备份 ...

  7. select2 简单解析

    <select name="supplierId" class="customsBrokerSel select2 absOpacity select2-hidde ...

  8. 集合转数组的toArray()和toArray(T[] a)方法

    参考:集合转数组的toArray()和toArray(T[] a)方法 1.ArrayList的toArray ArrayList提供了一个将List转为数组的一个非常方便的方法toArray.toA ...

  9. 在页面中有overflow-y:auto属性的div,当出现滚动条,点击返回顶部按钮,内容回这个div最顶部

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

  10. 剖析插件 DataTable 自定义列表列get请求如何书写传递的参数

    重点代码Demo 已用 斜体标注 后端flask: @task_mgm.route('/taskinfo_editID=<int:num>', methods=['GET', 'POST' ...