2018.10.13 bzoj4008: [HNOI2015]亚瑟王(概率dp)
传送门
马上2点考初赛了,心里有点小紧张。
做道概率dp压压惊吧。
话说这题最开始想错了。
最开始的方法是考虑f[i][j]f[i][j]f[i][j]表示第iii轮出牌为jjj的概率。
然后用第iii轮111~j−1j-1j−1都不选的概率与前i−1i-1i−1轮都不选jjj的概率转移。
但这样是错的。
因为两个转移的量是有交集的。
因此需要换一种状态定义方式。
我们考虑f[i][j]f[i][j]f[i][j]表示前iii张出了jjj张的概率(注意是针对所有轮加起来)。
然后转移就很easyeasyeasy了。
代码:
#include<bits/stdc++.h>
#define db double
using namespace std;
int n,r,T;
db mul[250][250],f[250][250],d[250],p[250],psum[250],ans;
inline void init(){
for(int i=1;i<=n;++i){
mul[i][0]=1;
for(int j=1;j<=r;++j)mul[i][j]=mul[i][j-1]*(1-p[i]);
}
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&r),ans=0;
for(int i=1;i<=n;++i)scanf("%lf%lf",&p[i],&d[i]);
memset(f,0,sizeof(f)),memset(psum,0,sizeof(psum)),init();
f[1][0]=mul[1][r],f[1][1]=psum[1]=1-f[1][0];
for(int i=2;i<=n;++i){
for(int j=0;j<=r;++j){
psum[i]+=f[i-1][j]*(1-mul[i][r-j]),f[i][j]+=f[i-1][j]*mul[i][r-j];
if(j)f[i][j]+=f[i-1][j-1]*(1-mul[i][r-j+1]);
}
}
for(int i=1;i<=n;++i)ans+=psum[i]*d[i];
printf("%.10lf\n",ans);
}
return 0;
}
2018.10.13 bzoj4008: [HNOI2015]亚瑟王(概率dp)的更多相关文章
- 【bzoj4008】[HNOI2015]亚瑟王 概率dp
题目描述 $n$ 张牌,$r$ 轮游戏,每轮从左向右操作,遇到第 $i$ 张牌有 $p_i$ 的概率选中,选中会产生 $d_i$ 的贡献,丢弃掉该牌并结束这一轮,否则继续下一张.问最终的期望贡献. 输 ...
- BZOJ4008: [HNOI2015]亚瑟王(期望dp)
Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 1952 Solved: 1159[Submit][Status] ...
- P3239 [HNOI2015]亚瑟王——概率DP
题面:亚瑟王 最近考试考期望很自闭啊,没做过这种类型的题,只能现在练一练: 所谓期望,就是状态乘上自己的概率:对于这道题来说,我们要求的是每张牌的伤害乘上打出的概率的和: 当然不是直接乘,因为给的是每 ...
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
[HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- BZOJ4008:[HNOI2015]亚瑟王(DP,概率期望)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个 ...
- Bzoj4008 [HNOI2015]亚瑟王
Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1009 Solved: 605[Submit][Status] ...
- 【文文殿下】[BZOJ4008] [HNOI2015] 亚瑟王
题解 这是一个经典的概率DP模型 设\(f_{i,j}\)表示考虑到前\(i\)张牌,有\(j\)轮没打出牌的可能性,那么显然\(f_{0,r} = 1\). 考虑第\(i+1\)张牌,他可能在剩下的 ...
- P3239 [HNOI2015]亚瑟王 期望dp
这个题一看就是期望dp,但是我有个问题,一个事件的期望等于他所有事件可能行乘权值的和吗...为什么我有天考试的时候就不对呢...求大佬解释一下. 至于这道题,f[i][j]代表前i个有j个发动技能,这 ...
随机推荐
- Jsch - java SFTP 文件上传下载
使用Jsch上传.下载文件,核心步骤是:获取channel,然后使用get/put方法下载.上传文件 核心代码句: session = jSch.getSession(ftpUserName, ftp ...
- 面向过程中的局部变量(global)
1.school = 'oldboy.edu' def change_name(name): school = " Mage Linux" # 局 ...
- Spring事务控制和传递性理解
1.在同一类方法间相互调用,如果调用方无事务控制,被调用方有事务控制,则被调用方也无事务 原因:外部经过spring容器调用service的方法事务才生效,service类内部方法间相互调用事务不生效 ...
- Spring mvc 返回json包含双引号问题 解决
解决方式1: @RequestMapping(value="/shopsList.json", produces = "text/html;charset=UTF-8&q ...
- Simple2D-23(重构)反走样几何图形
以前 Simple2D 使用 Canvas2D 对象来绘制几何图形,而且渲染出来的几何图形存在明显的锯齿.如果想要抗锯齿的几何图形,则需要开启 OpenGL 的 MSAA,这需要很大的开销. 如果不使 ...
- 【转】.net 实现 语音搜索(仅限WebKit内核浏览器)
<input type="text" class="text" name="value_2" id="value_2&quo ...
- rabbitmq /usr/lib/rabbitmq/bin/rabbitmq-server: line 85: erl: command not found
问题描述:在使用命令/sbin/service rabbitmq-server start启动Rabbitmq时,报: Job for rabbitmq-server.service failed b ...
- oracle内存结构
一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. ...
- MySql初步II
[MySql初步II] 1.Order By 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列. 默认情况下,它是按升排列. 实例: 2.Join语法 Join不是一个关键字 ...
- 部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930;
描述:部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930: 原因:所有物料规划PR时对舍入值的先后考虑逻辑影响到回写出来的temp ...