[HNOI 2015]亚瑟王
Description
小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑。
Input
输入文件的第一行包含一个整数 T,代表测试数据组数。
Output
对于每组数据,输出一行,包含一个实数,为这套卡牌在这一局游戏中造成的
Sample Input
3 2
0.5000 2
0.3000 3
0.9000 1
Sample Output
HINT
一共有 13 种可能的情况:
题解
利用期望的线性性 $E(x+y) = E(x)+E(y)$ 可知,这题我们可以先求出每张牌的打出概率 $fp_i$ ,然后就可以得出 $$ans = \sum_{i = 1}^n fp_i*d_i$$
这道题需要用到的一个公式:
在不考虑其他牌的前提下,若一张牌一轮打出的概率为 $p$ ,则在 $r$ 轮中打出这张牌的概率为: $$1-(1-p)^r$$
简要证明:
记要求的总概率为 $P$ ,显然
\begin{aligned}
P &= p+p*(1-p)+p*(1-p)^2+…+p*(1-p)^{r-1} \\
& = \frac{p*(1-(1-p)^r)}{1-(1-p)}\\
& = 1-(1-p)^r
\end{aligned}
另外我们发现,单独考虑每张牌的概率的时候,影响其的只有他前面选了几张。
我们不妨记一个辅助数组 $f_{i, j}$ 为总 $r$ 轮后前 $i$ 张牌中选中了 $j$ 张牌的概率。
容易发现: $$fp_i = \sum_{j = 0}^n f_{i-1, j}*(1-(1-p_i)^{r-j})$$
现在我们就是考虑 $f_{i, j}$ 如何转移。
第一种, $f_{i, j}$ 从 $f_{i-1, j}$ 转移过来,即第 $i$ 张牌最终没有选,始终不选第 $i$ 张牌的概率是 $(1-p_i)^{r-j}$
$$f_{i, j} += f_{i-1, j}*(1-p_i)^{r-j}(i>0)$$
第二种,当 $j>0$ 时, $f_{i, j}$ 可以从 $f_{i-1, j-1}$ 转移过来,表示最终选择了第 $i$ 张牌
这时候,有 $j-1$ 轮没有考虑到第 $i$ 张牌,所以考虑到第 $i$ 张牌的轮数是 $r-j+1$ ,最终选择的概率为 $1-(1-p_i)^{r-j+1}$
$$ f_{i, j} += f_{i-1, j-1}*(1-(1-p_i)^{r-j+1})(i>0,j>0)$$
总时间复杂度 $O(Tnr)$ 。
//It is made by Awson on 2018.1.2
#include <set>
#include <map>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define LD long double
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
using namespace std;
const int N = ; int n, r;
LD p[N+], d[N+];
LD pre[N+][N+], f[N+][N+], fp[N+]; void work() {
scanf("%d%d", &n, &r);
for (int i = ; i <= n; i++) scanf("%Lf%Lf", &p[i], &d[i]), pre[i][] = ;
for (int i = ; i <= n; i++) for (int j = ; j <= r; j++) pre[i][j] = pre[i][j-]*(-p[i]);
memset(f, , sizeof(f)); memset(fp, , sizeof(fp));
f[][] = ;
for (int i = ; i <= n; i++)
for (int j = ; j <= r; j++) {
fp[i] += f[i-][j]*(-pre[i][r-j]);
f[i][j] += f[i-][j]*pre[i][r-j];
if (j > ) f[i][j] += f[i-][j-]*(-pre[i][r-j+]);
}
LD ans = ;
for (int i = ; i <= n; i++) ans += d[i]*fp[i];
printf("%Lf\n", ans);
}
int main() {
int t; cin >> t;
while (t--) work();
return ;
}
[HNOI 2015]亚瑟王的更多相关文章
- bzoj[HNOI2015]亚瑟王 - 递推与动规 - 概率与期望
[bzoj4008][HNOI2015]亚瑟王 2015年4月22日3,2991 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之 ...
- BZOJ 4008 【HNOI2015】 亚瑟王
题目链接:亚瑟王 这道题好神啊TAT--果然我的dp还是太弱了-- 一开始想了半天的直接dp求期望,结果最后WA的不知所云-- 最后去翻了题解,然后发现先算概率,再求期望--新姿势\(get\). 我 ...
- Bzoj4008 [HNOI2015]亚瑟王
Time Limit: 20 Sec Memory Limit: 512 MBSec Special Judge Submit: 1009 Solved: 605[Submit][Status] ...
- 【BZOJ4008】[HNOI2015]亚瑟王 期望
[BZOJ4008][HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- 洛谷P1930 亚瑟王的宫殿 Camelot
P1930 亚瑟王的宫殿 Camelot 19通过 53提交 题目提供者JOHNKRAM 标签USACO 难度提高+/省选- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 很久以前,亚瑟王和 ...
- BZOJ 4008 亚瑟王
Description 小K不慎被LL邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂亮.众所周知,亚瑟王是一个看脸的游 ...
- BZOJ 4008: [HNOI2015]亚瑟王( dp )
dp(i, j)表示考虑了前i张牌, 然后还有j轮的概率. 考虑第i+1张牌: 发动的概率 : p = dp(i, j) * (1 - (1-p[i+1])^j) 没发动的概率 : dp(i, j) ...
- [BZOJ4008]亚瑟王
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
随机推荐
- 网络1712--c语言第二次作业总结
1.作业亮点 1.1在调试问题方面有明显进步,变量声明方面有所改变,没有发现大面积抄袭现象. 1.2 以下几位同学博文写的较为优秀,可作为范例供大家参考 田亚琴--代码格式良好,思路清晰,调试部分图文 ...
- 20162330 第十二周 蓝墨云班课 hash
题目要求 利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75) 关键字集合:85,75,57,60,65,(你的8位学号 ...
- 20162302 实验一《Java开发环境的熟悉》实验报告
实 验 报 告 课程:程序设计与数据结构 姓名:杨京典 班级:1623 学号:20162302 实验名称:Java开发环境的熟悉 实验器材:装有Ubuntu的联想拯救者80RQ 实验目的与要求:1.使 ...
- 团队作业4——第一次项目冲刺(Alpha版本)
第一天http://www.cnblogs.com/ThinkAlone/p/7861070.html 第二天http://www.cnblogs.com/ThinkAlone/p/7861191.h ...
- NetFPGA-1G-CML Demo --- reference_router_nf1_cml
环境 deepin 15.4 vivado 15.2 ise 14.6 前期准备 Github Wiki链接:https://github.com/NetFPGA/NetFPGA-public/wik ...
- 顺企网 爬取16W数据保存到Mongodb
import requests from bs4 import BeautifulSoup import pymongo from multiprocessing.dummy import Pool ...
- nyoj 黑色帽子
黑色帽子 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 最近发现了一个搞笑的游戏,不过目前还没玩过.一个舞会上,每个人头上都戴着一顶帽子,帽子只有黑 ...
- 原始的Ajax方法 (异步的 JavaScript 和 XML -- (Extensible Markup Language 可扩展标记语言))
<script language="javascript" type="text/javascript"> var request = false; ...
- javascript原型链__proto__属性的理解
在javascript中,按照惯例,构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头.一个方法使用new操作符创建,例如下面代码块中的Person1(可以吧Person1看做 ...
- Python——cmd调用(os.system阻塞处理)
os.system(返回值为0,1,2) 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os.s ...