bzoj 4318 OSU! - 动态规划 - 概率与期望
Description
Input
Output
Sample Input
0.5
0.5
0.5
Sample Output
HINT
题目大意 已知一个01串的第i位为1的概率为\( p_{i} \),出现x个连续的1,则对分数有\( x^{3} \)的贡献(不能重复进行贡献,例如11的分数为8,而不是10),问期望的分数。
根据dp的常用套路,会考虑设\( f[i][j] \)表示考虑到第i位,末尾有j个1的期望分数。但是这里是求期望,期望是有线性的,所以直接考虑期望增加的分数。
故用\( f[i] \)表示考虑到第i位的期望。
1.如果第i位为0,则什么贡献都不会产生
2.如果第i位为1,然后考虑增加的贡献,设\( x \)表示末尾有x个1,则有\( \left(x + 1 \right )^{3}-x^{3} \),化简得到\( 3x^{2} + 3x + 1 \)
设\( p \)表示\( p_{i} \),考虑维护期望的x的值,这个很好想,直接\( E_{x}' = p\left(E_{x} + 1 \right ) \)。
关键是如何维护\( x^{2} \)(科普,正确的对平方的期望的理解是 长度的平方 的期望,显然它不等于 期望的长度 的平方)
考虑它的定义,设\( P_{i} \)表示上一位结尾有i个1的概率。根据期望的定义我们有:
\( E_{x^{2}} = \sum_{k = 0}^{i - 1}k^{2}P_{k}=0^{2}P_{0}+1^{2}P_{1}+\cdots +\left(i - 1 \right )^{2}P_{i-1} \)
现在考虑第i位为1,于是得到了下面这个式子:
\( E_{x^{2}}' = p\left[0 + \sum_{k = 0}^{i - 1}\left ( k+1 \right )^{2}P_{k}\right] \)
用完全平方公式展开其中的平方系数:
\( E_{x^{2}}' = p\left[0 + \sum_{k = 0}^{i - 1}\left ( k^{2} + 2k +1 \right )P_{k}\right] \)
继续化简得到:
\( E_{x^{2}}' = p \left( \sum_{k = 0}^{i - 1} k^{2}P_{k} + 2\sum_{k = 0}^{i - 1}kP_{k} + \sum_{k=0}^{i-1}P_{k} \right) \)
对比\( E_{x} \)的定义式\( E_{x} = \sum_{k = 0}^{i - 1}kP_{k} \)和\( E_{x^{2}} \)的定义式,然后根据一下有关\(P_{i}\)的性质可以得到:
\( E_{x^{2}}'=p\left (E_{x^{2}} + 2E_{x} + 1 \right ) \)
然后一切就简单了。
由于\( f[i] \)等于\( f[i - 1] \)加一坨乱七八糟的东西,答案在\( f[n] \),所以这题根本不用数组qaq。
Code
#include <bits/stdc++.h>
using namespace std;
typedef bool boolean;
#define ll long long int n;
double p, x = 0.0, x2 = 0.0, E = 0.0; inline void solve() {
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%lf", &p);
E += ( * (x2 + x) + ) * p;
x2 = (x2 + * x + ) * p;
x = (x + ) * p;
// cerr << E << " " << x2 << " " << x << endl;
}
printf("%.1lf", E);
} int main() {
solve();
return ;
}
bzoj 4318 OSU! - 动态规划 - 概率与期望的更多相关文章
- BZOJ 4318 OSU!(概率DP)
题意 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的01串.在 ...
- BZOJ 4318: OSU! [DP 概率]
传送门 题意:变成了告诉每个操作的成功概率,并且得分是三次方 一样....分别维护$x,\ x^2,\ x^3$的期望就行了 注意$x^3$是我们最终求的得分,即使失败得分也要累加上之前的 #incl ...
- BZOJ 4318: OSU! 期望DP
4318: OSU! 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4318 Description osu 是一款群众喜闻乐见的休闲软件 ...
- BZOJ 4318: OSU! 期望概率dp && 【BZOJ3450】【Tyvj1952】Easy 概率DP
这两道题是一样的...... 我就说一下较难的那个 OSU!: 这道15行的水题我竟然做了两节课...... 若是f[i][0]=(1-p)*f[i-1][0]+(1-p)*f[i-1][1],f[i ...
- bzoj 4318 OSU 概率期望dp
可以发现:f[i]转移到f[i+1]只和最后一串1的长度和平方有关, 因为如果新加的位置是1,贡献就是(x+1)^3-x^3=3x^2+3x+1,否则为0: 所以对于每一个位置,处理出期望的f,x和x ...
- bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- BZOJ - 4318: OSU! (期望DP&Attention)
Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...
- BZOJ 4318 OSU! ——期望DP
这次要求$x^3$的概率和. 直接维护三个值$x$ $x^2$ $x^3$的期望. 概率的平方不等于平方的概率. #include <map> #include <ctime> ...
- bzoj 4318 OSU! —— 期望DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4318 期望DP,因为平方的期望不等于期望的平方,所以用公式递推: 第一次推错了囧,还是看这位 ...
随机推荐
- JavaScript 字符串replace全局替换
一般使用replace let str = "2018-8-14"; str.replace('-','/')//2018/8-14 并没有替换第二个”-“, 所以我们用正则表达式 ...
- c++将lambda作为callback函数
想用c++发送http_post请求,用到了libcurl. 想将其包装一下,因为默认http的响应结果是打印到stdout的,如果想将响应结果另外处理,需要自己定义一个callback函数. 考虑到 ...
- Python记录8:函数的嵌套
#函数的嵌套分为两类:# 1.函数的嵌套定义: 在函数内部又定义了一个函数# def foo():# x=1# # print(x)# def bar():# print('from bar')## ...
- ueditor上传图片配置成功,但是如何删除无用的图片
我使用ueditor作为富文本编辑器,配置已经好了,上传功能也好了.现在的问题是当使用ueditor上传图片的时候,选择了图片就立刻上传到指定的文件夹里,而后续即使没有保存该篇文章内容,即取消操作,图 ...
- ==与Equals的作用
string str1 = "Blackteeth"; string str2 = str1; string str3 = "Blackteeth"; Cons ...
- D Tree Requests dfs+二分 D Pig and Palindromes -dp
D time limit per test 2 seconds memory limit per test 256 megabytes input standard input output stan ...
- Pycharm学习python路
import 模块之后是灰色的表明没有被引用过 lxml找不到的话用anaconda prompt :pip uninstall lxml 重新安装 用request时,写的reg无法正确解析网页,先 ...
- uva 1633 Dyslexic Gollum
题意: 给出n和k,求出长度为n的不包含长度大于等于k的回文串的01字符串的个数. 思路: 如果一个字符串包含长度为k的回文串,那么它肯定包含长度为k-1的回文串,所以考虑第i位的时候,只要前缀中不包 ...
- 如何用新安装的jdk替换掉Linux系统默认jdk
版主写的非常棒: http://blog.csdn.net/u011364306/article/details/48375653
- 举例说明Unicode 和UTF-8之间的转换
1)写这篇博客的原因 首先我要感谢这篇博客,卡了很久,看完下面这篇博客终于明白Unicode怎么转换成UTF-8了. https://blog.csdn.net/qq_32252957/article ...