题解 P1654 【OSU!】
题面
一序列\(a\), 对于每一个\(i\)均有\(a_i\)有\(p_i\)的几率为1, 否则为\(0\)
求: \(a\)中极长全\(1\)子序列长度三次方之和的期望
前置知识
- 基本期望(期望的概念总得会吧...
- 脑子
解法
可以设\(f(x)\)表示 操作是否成功序列 (以下简称序列\(a\))前\(x\)位以\(x\)结尾极长全\(1\)子序列长度的期望, \(g(x)\)表示\(a\)前\(x\)位以\(x\)结尾极长全\(1\)子序列长度平方的期望, \(r(x)\)表示\(a\)前\(x\)位以\(x\)结尾极长全\(1\)子序列长度三次方的期望(以下简称"期望"), \(h(x)\)表示\(a\)前\(x\)位极长全\(1\)子序列长度三次方之和的期望(即原题所求量)
为了叙述方便以下称原题给出的序列为\(p\)
由期望的定义\(E(x) = \sum v_ip_i\), 有
\]
同样有:
\]
\]
以及
\]
然后有
\]
这里稍微解释一下, 因为\(h(x)+r(x)\)包括了以\(x-1\)结尾的期望两次(\(h(x)\)包括了\([1, n-1]\)的期望, \(r(x)\)包括了\([lst, n]\)的期望(此处\(lst\)为以\(x-1\)(即\(x\), 因为开头不变)结尾的极长全\(1\)子序列的开头的期望)), 所以要减去\([lst, n-1]\)的期望, 即\(r(x-1)\)
展开原式得
\]
(发现\(p\)完全没有用呢)
接下来暴力扫一遍序列\(p\)求出\(f, g, h\)即可, 时间复杂度为\(O(n)\)
萌新求通过qwq
Code
/*code by tyqtyq*/
#include<bits/stdc++.h>
#define f(i,x,y) for(register int i=x, i##end=y; i<=i##end; ++i)
#define d(i,x,y) for(register int i=y, i##end=x; i>=i##end; --i)
#define FO(x) {freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);}
using namespace std;
int read(int& x){x=0; int f=1, ch=getchar(); while(!isdigit(ch)) f=ch=='-'?-1:f, ch=getchar(); while(isdigit(ch)) x=x*10+ch-'0', ch=getchar(); return x*=f;}
int read(){int x=0, f=1, ch=getchar(); while(!isdigit(ch)) f=ch=='-'?-1:f, ch=getchar(); while(isdigit(ch)) x=x*10+ch-'0', ch=getchar(); return x*f;}
int max(int x, int y){return x>y?x:y;} int min(int x, int y){return x<y?x:y;}
#define _ 100005
#define read(X) scanf("%lf", &X)
#define print(X) printf("%.1lf\n", X)
double px1[_], px2[_], ans[_], a[_];
int n;
int main(){
scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%lf", &a[i]);
for(int i=1;i<=n;++i) {
px1[i]=(px1[i-1]+1)*a[i];
px2[i]=(px2[i-1]+2*px1[i-1]+1)*a[i];
ans[i]=ans[i-1]+(3*px2[i-1]+3*px1[i-1]+1)*a[i];
}
print(ans[n]);
return 0; //拜拜程序~
}
题解 P1654 【OSU!】的更多相关文章
- 洛谷 P1654 OSU! 解题报告
P1654 OSU! 题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有\(n\)次操作,每次操作只有成功与失败之分,成功对应\(1\),失败对应 ...
- P1654 OSU! 题解
\(x\) 为该位置有 \(1\) 的期望. 统计两个值 : \(suma\) 和 \(sumb\). \(suma\) 表示连续 \(X\) 个 \(1\) , \(X\) 的平方的期望, \(su ...
- Luogu P1654 OSU!
写法和CF235B Let's Play Osu!非常相似.但是这个题厉害就厉害在统计的贡献里面有一个平方的期望,而这个平方的期望和期望的平方是完全不一样的,需要另外统计,逻辑上仔细想一想就会明白. ...
- P1654 OSU!-洛谷luogu
传送门 题目背景 原 <产品排序> 参见P2577 题目描述 osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败 ...
- bzoj 4318 || 洛谷P1654 OSU!
https://www.lydsy.com/JudgeOnline/problem.php?id=4318 https://www.luogu.org/problemnew/show/P1654 看来 ...
- Luogu P1654 OSU! | 期望
题目链接 很妙的一道题. 题目要求$X^3$的期望值. 直接求不好求. 考虑先求出$X$和$X^2$的期望值,然后再求$X^3$的期望值. 迎.刃.而.解. #include<iostream& ...
- p1654 OSU!
期望DP 设\(g[i]\)表示前i个的连续1的期望长度,\(h[i]\)表示前i个连续1的长度的平方的期望,\(f[i]\)表示前i个的期望得分 由期望的线性性质,我们可以考虑统计新增一个对答案的贡 ...
- 洛谷P1654 OSU!_概率与期望
Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 1000000 ...
- LUOGU P1654 OSU! (概率期望)
传送门 解题思路 首先考虑对于一个点来说,如果这个点是1的话,那么对于答案来说 $(ans+1)^3=ans^3+3*ans^2+3*ans+1$,这对于上一个答案来说其实贡献了 $3*ans^2+3 ...
随机推荐
- BlackArch-Tools
BlackArch-Tools 简介 安装在ArchLinux之上添加存储库从blackarch存储库安装工具替代安装方法BlackArch Linux Complete Tools List 简介 ...
- 012.CI4框架CodeIgniter, 加载并调用自己的Libraries库
01. 在Libraries目录创建一个Mylib文件,内容是一个简单的类 <?php namespace App\Controllers; class Home extends BaseCon ...
- 012.Delphi插件之QPlugins,多实例内嵌窗口服务
这个DEMO中主要是在DLL中建立了一个IDockableControl类,并在DLL的子类中写了具体的实现方法. 在主程序exe中,找到这个服务,然后调用DLL的内嵌方法,把DLL插件窗口内嵌到主程 ...
- excel 两列值匹配取另外一列值 INDEX MATCH 函数
=INDEX($D:$D,MATCH(K68,$C:$C,0))
- http error 502.5
原文地址:https://www.cnblogs.com/loui/p/7826073.html 在部署网站时遇到的各种问题,通过检索找到了解决方案,感谢!!记录一下以免忘记.. 解决方法:把IIS的 ...
- 一文详解scala泛型及类型限定
今天知识星球球友,微信问浪尖了一个spark源码阅读中的类型限定问题.这个在spark源码很多处出现,所以今天浪尖就整理一下scala类型限定的内容.希望对大家有帮助. scala类型参数要点 1. ...
- HDU - 1166 敌兵布阵 (线段树---点修改)
题意: 1.Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) 2.Sub i j ,i和j为正整数,表示第i个营地减少j个人(j不超过30); 3.Query i j ,i和j ...
- Redis 详解 (五) redis的五大数据类型实现原理
目录 1.对象的类型与编码 ①.type属性 ②.encoding 属性和 *prt 指针 2.字符串对象 3.列表对象 4.哈希对象 5.集合对象 6.有序集合对象 7.五大数据类型的应用场景 8. ...
- JPA#复杂查询#引子
_ 震惊....简历上写精通JPA的被下面几个问题震呆了.... 几个问题: 复杂查询如何从前端传递到后端,特别是多个条件的.且具有and和or等复杂逻辑,这个要如何封装呢? 多表查询? 自定义sql ...
- 虚拟化安全服务器のIP修改配置
1)进入网卡配置文件目录(以centos7.6为例) cd /etc/sysconfig/network-scripts 2)编辑配置文件(根据自己机器实际网卡进行编辑), 如Vi ifcfg ...