[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 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
随机推荐
- 使用Java客户端操作elasticsearch
Java REST客户端有两种风格: Java低级别REST客户端(Java Low Level REST Client,以后都简称低级客户端算了,难得码字):Elasticsearch的官方low- ...
- 安利给班里的大家一个chrome的GitHub插件-----gayhub
title: 一个好用的Github插件--gayhub date: 2017-09-20 15:41:36 tags: --- 别跑, 这真是正经插件. 效果, 一图流: 具体效果在项目地址很详细 ...
- 转 Eclipse快捷键调试大全
(1)Ctrl+M --切换窗口的大小(2)Ctrl+Q --跳到最后一次的编辑处(3)F2 ---重命名类名 工程名 --当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时To ...
- JAVA使用和操作properties文件
java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properti ...
- django搭建web (四) models.py
demo 该demo模型主要是用于问题,选择单个或多个答案的问卷形式应用 # -*- coding: utf-8 -*- from __future__ import unicode_literals ...
- RE:1054652545 - 论自己是如何蠢死的
1.Java web 项目中 login/list 文件夹中return "login/list" 反复读取不到对应的jsp文件 一周后检查出来的原因上一级文件夹login前面多出 ...
- vue jquery js 获取当前时间本周的第一天 和 本月的第一天
交互的时候传输数据 后台要求这样的数据 直接上代码 这是我找度姨要的 附上链接 https://www.cnblogs.com/wasabii/p/7756560.html 它里面有本季度第一天 ...
- Mego(07) - 关系配置
这个是本框架的重要功能,该关系就是指对象中的复杂对象或集合属性,该关系与EF中的关系是有区别的.EF中强调关系的成对出现,这是由于数据库关系的思想决定的.然而Mego更接近与对象化逻辑,我们只关心当前 ...
- GZip 压缩及解压缩
/// <summary> /// GZipHelper /// </summary> public class GZipHelper { /// <summary> ...
- MySQL 避免重复数据的批量插入与批量更新
[转发] 导读 我们在向数据库里批量插入数据的时候,会遇到要将原有主键或者unique索引所在记录更新的情况,而如果没有主键或者unique索引冲突的时候,直接执行插入操作. 这种情况下,有三种方式执 ...