【BZOJ】4318: OSU! 期望DP
【题意】有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L)。现在给定n个实数表示该位为1的概率,求期望总价值。n<=10^5。
【算法】期望DP
【题解】后缀长度是一个很关键的量,设g[i]表示前i个的期望后缀长度。根据全期望公式,依赖于第i-1位为0或1:(以下所有公式最后省略+(1-ai)*0)
$$g[i]=a_i*(g[i-1]+1)$$
设f[i]表示前i个的期望长度,当第i-1位为1时,f[i]相对于f[i-1]的后缀多了[ (g[i-1]+1)^3 ] - [ g[i-1]^3 ]的代价,即:
$$f[i]=f[i-1]+a_i*(3*g^2[i-1]+3*g[i-1]+1)$$
等等,这没有结束,只有加法和乘法满足期望的线性,不包括乘方。通俗地说,期望的乘方不等于乘方的期望。
设g2[i]表示前i个的期望“后缀长度的平方”,同样的g2[i]相对于g2[i-1]多了[ (g[i-1]+1)^2 ] - [ g[i-1]^2 ],即:
$$g_2[i]=a_i*(g_2[i-1]+2*g[i-1]+1)$$
复杂度O(n)。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=;
double f[maxn],g[maxn],g2[maxn];
int n;
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
double x;
scanf("%lf",&x);
g[i]=(g[i-]+)*x;
g2[i]=(g2[i-]+*g[i-]+)*x;
f[i]=f[i-]+(*g2[i-]+*g[i-]+)*x;
}
printf("%.1lf",f[n]);
return ;
}
【BZOJ】4318: OSU! 期望DP的更多相关文章
- BZOJ 4318: OSU! 期望DP
4318: OSU! 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4318 Description osu 是一款群众喜闻乐见的休闲软件 ...
- bzoj 4318 OSU! —— 期望DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4318 期望DP,因为平方的期望不等于期望的平方,所以用公式递推: 第一次推错了囧,还是看这位 ...
- 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 && 【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)
题意 中文题面,难得解释了 题目传送门 分析 考虑到概率DPDPDP,显然可以想到f(i,j)f(i,j)f(i,j)表示到第iii位末尾有jjj个111的期望值.最后输出f(n+1,0)f(n+1, ...
- ●BZOJ 4318 OSU!
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4318题解: 期望dp 如果我们能够得到以每个位置结尾形成的连续1的长度的相关期望,那么问题就 ...
- 【BZOJ4318】OSU! 期望DP
[BZOJ4318]OSU! Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分,成功对应1 ...
- bzoj 4318 OSU!
期望dp. 考虑问题的简化版:一个数列有n个数,每位有pi的概率为1,否则为0.求以每一位结尾的全为1的后缀长度的期望. 递推就好了. l1[i]=(l1[i-1]+1)*p[i]+0*(1-p[i] ...
随机推荐
- java 抽象类&接口
1,抽象类中有构造函数吗? 有,用于给子类对象进行初始化. 2,抽象关键字不可以和那些关键字共存? private 不行 static 不行 final 不行 final关键字: 1,fina ...
- 模板CodeTemplate
/** * @author:dubbo@xxxx.com * @date: ${date} ${time} * @version: V1.0 * @review: dubbo/${date} ${ti ...
- ROC曲线【转】
受试者工作特征曲线(receiver operating characteristic curve, 简称ROC曲线),又称为感受性曲线(sensitivity curve).得此名的原因在于曲线上各 ...
- 【bzoj2329】[HNOI2011]括号修复 Splay
题目描述 题解 Splay 由于有区间反转操作,因此考虑Splay. 考虑答案:缩完括号序列后剩下的一定是 $a$ 个')'+ $b$ 个'(',容易发现答案等于 $\lceil\frac a2\rc ...
- 导出ORACLE表结构到SQL语句(含CLOB)
转自:http://blog.itpub.net/84738/viewspace-442854/ 先用exp导出空表 exp username/password rows=n file=expor ...
- Redis存储系统
一.QuickStart 1.Redis简介: redis是一个性能非常优秀的内存数据库,通过key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string ...
- 【BZOJ3894】文理分科(最小割)
[BZOJ3894]文理分科(最小割) 题面 BZOJ Description 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个 ...
- C++ 指针[转+原创]
要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区. 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉 ...
- 框架----Django之Form提交验证(一)
一.Form提交验证与Ajax提交验证的运用实例 Form表单提交时会刷新页面,输入失败时,输入框内内容也会随之刷新不能保留:而Ajax提交是在后台偷偷提交,不会刷新页面,因此也就可以保留页面输入框内 ...
- jq从数组中删除指定元素(根据自定义条件) 超好用的 $.grep() 方法
转: jQuery.grep() 什么是jQuery.grep()? jQuery.grep()是一个查找满足过滤函数的数组元素的函数.原始数组不受影响,返回值为数组. 用法介绍: 写法: jQuer ...