[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 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
随机推荐
- 听翁恺老师mooc笔记(7)--字符串1
C语言中字符串的定义 如果定义一个字符数组word,并使用大括号对其初始化,如下图所示: 但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算.那么C语言的字符串长什 ...
- Beta第二天
听说
- C语言博客作业—结构体
一.PTA实验作业 题目1:结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 void calc //函数calc求出p指针所指的结构体数组中 n 名学生各自的总分 { 定义循环变量i: ...
- 2017-2018-1 1623 bug终结者 冲刺004
bug终结者 冲刺004 by 20162322 朱娅霖 整体连接 简要说明 目前,我们已经完成了欢迎界面,主菜单界面,排行榜界面,选项界面,胜利界面,地板类.小人类.墙体类.箱子类和虚拟按键类. 主 ...
- HASH方法课下补分博客
课堂要求:利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75)关键字集合:85,75,57,60,65,(你的8位学号相 ...
- JAVA对象克隆
1> 为了获取对象的一份拷贝,我们可以利用Object类的clone()方法. 2> 在派生类中覆盖基类的clone(),并声明为public.3> 在派生类的clone()方法中, ...
- (原创)带模板的OLE输出EXCEL
其实带模板的OLE输出EXCEL就是将要输出的EXCEL中一些拥有固定值(如标题,表头行等)的单元格先填充好数据和设置好格式后作为模板上传到SAP 中.这样后续在输出EXCEL时只需从SAP中将模板下 ...
- 山西某公司NetApp存储不小心删除文件数据恢复成功案例
故障情况简介: 需要进行数据恢复的设备是一台NetApp存储,共有24块磁盘组成.由于管理员删除文件夹,且时间比较久,删除有几个月时间. 可恢复性判断:由于NetApp中的文件系统的特性,WAFL是& ...
- SpringCloud的DataRest(一)
一.概念与定义 Spring Data Rest 基于Spring Data的repository,可以把 repository 自动输出为REST资源, 这样做的好处: 可以免去大量的 contro ...
- ELK学习总结(2-5)elk的版本控制
----------------------------------------------------------------- 1.悲观锁和乐观锁 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据 ...