博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WJMZBMR打osu! / Easy
阅读量:6341 次
发布时间:2019-06-22

本文共 1035 字,大约阅读时间需要 3 分钟。

有一个由o,x,?组成的长度为n的序列,?等概率变为o,x,定义序列权值为连续o的长度o的平方之和,询问权值的期望,

注意到权值不是简单的累加关系,存在平方,所以我们需要变式,而递推的权值必须是连续的,于是我们得设\(g\)表示以x-1结尾的连续o的期望长度,设\(f[x]\)表示前x个的权值期望,设s[x]为x处的字符,因此我们不难有

\[if(s[x]==o)f[x]=f[x-1]+2g+1,g=g+1\]

\[if(s[x]==x)f[x]=f[x-1],g=0\]
\[if(s[x]==?)f[x]=f[x-1])+g+0.5,g=g/2+0.5\]

注意到数据范围缺失,于是开滚动数组即可。

参考代码:

#include 
#include
#define il inline#define ri registerusing namespace std;double f[2],g[2];il void get(char&);int main(){ int n;char c; bool now(false); scanf("%d",&n); while(n--){ get(c),now^=1; switch(c){ case 'o': f[now]=f[now^1]+2*g[now^1]+1; g[now]=g[now^1]+1; break; case 'x': f[now]=f[now^1],g[now]=0; break; case '?': f[now]=f[now^1]+g[now^1]+0.5; g[now]=g[now^1]/2+0.5; break; } }printf("%.4lf",f[now]); return 0;}il void get(char &c){ while(c=getchar(),c==' '||c=='\n'||c=='\r');}

转载于:https://www.cnblogs.com/a1b3c7d9/p/10818914.html

你可能感兴趣的文章
property函数
查看>>
数论 - 组合数学 + 素数分解 --- hdu 2284 : Solve the puzzle, Save the world!
查看>>
.Net 从零开始构建一个框架之基本实体结构与基本仓储构建
查看>>
C#核编之内建数据类型
查看>>
Oracle运算符收录(易忘记,但是又很重要的运算符)
查看>>
POJ 2062 Card Game Cheater
查看>>
'ascii' codec can't decode byte 0xd6 in position 0
查看>>
TPVJ水题
查看>>
OWINS是什么(转载)
查看>>
在一台电脑访问另一台电脑的mysql数据库
查看>>
指针数组与数组指针
查看>>
python之MySQL学习——数据操作
查看>>
Quartz定调度简单案例
查看>>
关于微信小程序 modal弹框组件的介绍
查看>>
给一系列的div中的第一个添加class
查看>>
centos6.8 安装jenkins
查看>>
vue-cli3.0+node.js+axios跨域请求session不一样的问题
查看>>
C#发送DKIM签名的邮件
查看>>
python中获取字典的key列表和value列表
查看>>
Windows8中使用IE8等低版本浏览器
查看>>