[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 ...
随机推荐
- 使用python开发一个能够计算带括号的复杂表达式的计算器(只支持加减乘除)
使用到了模块re,正则,字典等 # 实现简单的加减乘除括号等运算 # Calculator def calculator(expression): print(expression) import r ...
- 【划水闲谈】Terraria 1.3.5更新
我知道这本应是一个算法博客,但又有谁规定了不能发点其他内容呢? Terraria,一个有趣的沙盒游戏.在这里,你可以建造,挖掘,开始一次又一次新的冒险. 4月19日,Re-Logic承诺的官方中文版终 ...
- PE结构详解
1 基本概念 下表描述了贯穿于本文中的一些概念: 名称 描述 地址 是“虚拟地址”而不是“物理地址”.为什么不是“物理地址”呢?因为数据在内存的位置经常在变,这样可以节省内存开支.避开错误的内存位置等 ...
- Git的安装和使用(Linux)【转】
转自:http://my.oschina.net/fhd/blog/354685 Git诞生于Linux平台并作为版本控制系统率先服务于Linux内核,因此在Linux上安装Git是非常方便的.可以通 ...
- sleep允许休眠, delay不允许
在Linux Driver开发中,经常要用到延迟函数:msleep,mdelay/udelay. 虽然msleep和mdelay都有延迟的作用,但他们是有区别的. 1.)对于模块本身 mdelay是忙 ...
- OpenStack Benchmark - Rally
作为以基于OpenStack的云平台的基准测试工具 -- Rally, 其功能不仅是测试云的性能&&稳定性, 还可以安装OpenStack,以及以良好的表现形式(web 页面)展现测试 ...
- 二、springcloud之熔断器hystrix
一.背景 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者”的不可用导致“服 ...
- 通过okhttp3下载文件实现APP版本更新
原文:https://blog.csdn.net/qq_34261214/article/details/77124729 概况 思路是这样的,首先在服务器上把已经签名打包的apk放上去,还有一份TX ...
- JS几种变量交换方式以及性能分析对比
前言 "两个变量之间的值得交换",这是一个经典的话题,现在也有了很多的成熟解决方案,本文主要是列举几种常用的方案,进行大量计算并分析对比. 起由 最近做某个项目时,其中有一个需求是 ...
- O(n log log n)实现FGT和FLT(Fast GCD/LCM Transformation)
本文是作者看不懂分治FFT之后开始娱乐一下自己写的 看到一道题时候询问了正解后,推出了一个奇怪的变换,发现这个很Transformation,我和正解推出来的奇怪的东西是一样的,但还是想写一下思路.. ...