[ZHOJ1956]vfk的地雷
题目大意:
有$n$个开关,$r$句话。
每个开关$i$有$p_i$的概率被触发,并造成$d_i$的代价。
每个开关至多被触发一次,一句话至多触发一个开关。
每个开关按照顺序被尝试触发。
求期望代价。
思路:
动态规划。
用$f_{i,j}$表示前$i$个开关被触发$j$次的概率,
用$g_{i,j}$表示前$i$个开关被触发$j$次所造成代价的期望。
那么$f_{i,j}=f_{i-1,j}\times(1-p_i)^{r-j-1}+f_{i-1,j-1}\times(1-(1-p_i)^{r-j-1})$。
其中$f_{i-1,j]}\times(1-p_i)^{r-j-1}$表示开关不被触发的概率,
$f_{i-1,j-1}\times(1-(1-p_i)^{r-j-1})$表示开关被触发的概率。
我们能得到$g_{i,j}=g_{i-1,j}\times(1-p_i)^{r-j-1}+(g_{i-1,j-1}+d_{i}\times f_{i-1,j-1})\times(1-(1-p_i)^{r-j-1})$
最后统计$g_n$的和即可。
#include<cstdio>
#include<cctype>
#include<cstring>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int N=,R=;
double p[N],d[N],f[N][R],g[N][R];
int main() {
for(register int T=getint();T;T--) {
int n=getint(),r=getint();
for(register int i=;i<=n;i++) {
scanf("%lf%lf",&p[i],&d[i]);
}
memset(f,,sizeof f);
memset(g,,sizeof g);
f[][]=;
for(register int i=;i<n;i++) {
register double q=;
for(register int j=r;~j;j--) {
f[i+][j]+=f[i][j]*q;
g[i+][j]+=g[i][j]*q;
f[i+][j+]+=f[i][j]*(-q);
g[i+][j+]+=(g[i][j]+d[i+]*f[i][j])*(-q);
q*=(-p[i+]);
}
}
double ans=;
for(register int i=;i<=r;i++) {
ans+=g[n][i];
}
printf("%.10f\n",ans);
}
return ;
}
[ZHOJ1956]vfk的地雷的更多相关文章
- Android安全开发之WebView中的地雷
Android安全开发之WebView中的地雷 0X01 About WebView 在Android开发中,经常会使用WebView来实现WEB页面的展示,在Activiry中启动自己的浏览器,或者 ...
- 扫地雷II
感谢格致杭业晟同学改进完善 uses crt;var i,j,k,ls,x,y:byte; b:array[0..11,0..11] of shortint; f:array[0..11,0.. ...
- uoj #9. 【UTR #1】vfk的数据 水题
#9. [UTR #1]vfk的数据 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/9 Description ...
- csuoj 1355: 地雷清除计划
这是一个非常神奇的题: 感觉像一个模拟搜索: 但是竟然可以用网络流来解决: 直接粘题解把: 如果不能走通的话,必然说明能够从右上角(图外面)沿雷“跳” ,一直可以“跳”左下角(图外面) ,因此建好图之 ...
- JAVA_扫雷游戏(布置地雷)
1.要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示.如某位置为地雷,则该位置用数字-1表示, 如该位置不是地雷,则暂时用数字0表示. 编写程序完成在该二维数组中随机布雷的操作,程序读 ...
- CSU 1355 地雷清除计划
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1355 好题,根本想不到是网络流. 模型如图: 假想从右上角到左下角有一条阻拦线,我们就是 ...
- 【UOJ#9】vfk的数据
我感觉这题可以出给新高一玩2333 #include<bits/stdc++.h> #define N 10005 using namespace std; string s[N]; in ...
- jquery在线扫雷
<扫雷>是一款大众类的益智小游戏,于1992年发行.游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷. 在线试玩 http://hovertree.com/te ...
- Atitit.uke 团队建设的组织与运营之道attilax总结
Atitit.uke 团队建设的组织与运营之道attilax总结 1. intro引言:2 2. aims组织成立宗旨2 1.1. Mission组织使命2 1.2. val核心价值观2 1.3. c ...
随机推荐
- springboot集成mybatis环境搭建以及实现快速开发微服务商品模块基本的增删改查!
之前学习了springboot和mybatis3的一些新特性,初步体会了springboot的强大(真的好快,,,,,),最近趁着复习,参考着以前学习的教程,动手写了一个springboot实战的小例 ...
- 【划水闲谈】Terraria 1.3.5更新
我知道这本应是一个算法博客,但又有谁规定了不能发点其他内容呢? Terraria,一个有趣的沙盒游戏.在这里,你可以建造,挖掘,开始一次又一次新的冒险. 4月19日,Re-Logic承诺的官方中文版终 ...
- C#抓取网络图片保存到本地
C#抓取网络图片保存到本地 System.Net.WebClient myWebClient = new System.Net.WebClient(); //将头像保存到服务器 string virP ...
- 转载:Github项目解析(七)-->防止按钮重复点击
不错的东西,记录下... http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/qq_23547831/article/deta ...
- Python爬虫学习1: Requests模块的使用
Requests函数库是学习Python爬虫必备之一, 能够帮助我们方便地爬取. Requests: 让HTTP服务人类. 本文主要参考了其官方文档. Requests具有完备的中英文文档, 能完全满 ...
- web文件<async-supported>错误分析
<async-supported>true</async-supported> 出现 cvc-complex-type.2.4.a: Invalid content was f ...
- (二)SpringMVC控制器
第一节:@RequestMapping请求映射 第二节:@RequestParam请求参数 第三节:ModelAndView返回模型和视图 第四节:SpringMVC对象属性自动封装 第五节:Spri ...
- <编程之美>经典面试题:求二叉树节点的最大距离(我的解法,最容易理解的版本?)
题目介绍: 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数. 写一个程序求一棵二叉树中相距最远的两个节点之间的距离. 如下图所示, ...
- Spring+Dubbo集成Redis的两种解决方案
当下我们的系统数据库压力都非常大,解决数据库的瓶颈问题势在必行,为了解决数据库的压力等需求,我们常用的是各种缓存,比如redis,本文就来简单讲解一下如何集成redis缓存存储,附github源码. ...
- 一键复制功能 - Vue
经常遇到一键复制功能,简单记录一下.这里使用的是clipboard插件:https://clipboardjs.com/ 第一步 安装:npm install clipboard --save 第二步 ...