博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tyvj1952 Easy OSU
阅读量:5797 次
发布时间:2019-06-18

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

EASY

对于每一位分别计算对答案的贡献,因为期望具有可加性,所以E[i]相加就是最后答案

l记录到当前位最大连续1的长度

s[i]=='o',第i位对答案的贡献= (l+1)^2-l^2=2*l+1;l=l+1;

s[i]=='x' 第i位对答案的贡献=0 ,l=0

s[i]=='?' 0.5的概率为1,贡献2*l+1;

             0.5的概率为0,贡献0

             l=0.5*(l+1)+0.5*0

#include
#include
#include
#define N 100005using namespace std;int n;double t,l[N],l2[N];int main(){ double ans=0.0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf",&t); ans+=t*((double)3.0*l2[i-1]+(double)3.0*l[i-1]+(double)1.0); l[i]=(l[i-1]+1)*t; l2[i]=(l2[i-1]+2.0*l[i-1]+1)*t; } printf("%0.1lf",ans); // while(1); return 0;}
OSU

方法和上面差不多,只是特别注意平方的期望和期望的平方不同,所以开两个数组,f[i]表示前i位长度的期望,g[i]表示前i位长度的平方的期望

对于每一位的贡献=(l+1)^3-l^3=3*l^2+3*l+1=3*g[i]+3*f[i]+1

f[i]很好求,按照上面的方法分类讨论直接求

此时,前i-1位的长度为f[i-1],如果下一位为1,则

g[i]=pi*g[i-1]=pi*E[(f[i-1]+1)^2]=pi*E[f[i-1]^2+2*f[i-1]+1]=E(f[i-1]^2)+2*E(f[i-1])+1(E表示期望)

所以g[i]=g[i+1]+2*f[i-1]+1;

#include
#include
#include
#define N 100005using namespace std;int n;double t,l[N],l2[N];int main(){ double ans=0.0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lf",&t); ans+=t*((double)3.0*l2[i-1]+(double)3.0*l[i-1]+(double)1.0); l[i]=(l[i-1]+1)*t; l2[i]=(l2[i-1]+2.0*l[i-1]+1)*t; } printf("%0.1lf",ans); // while(1); return 0;}

转载于:https://www.cnblogs.com/hunterxhunterl/p/7780712.html

你可能感兴趣的文章
golang的ssh包
查看>>
请相信一个绝地反击的故事
查看>>
js select操作
查看>>
Jquery-Pager+ashx 实现分页
查看>>
网络编程
查看>>
修改xampp的mysql默认密码(转)
查看>>
AX_Unit
查看>>
软件工程个人作业02。
查看>>
一只皮球从100米的高处落地,每次落地后反弹是原高度的一半再落下,算出这只皮球在第10次落下后一共经历多少米?第10次反弹的高度是多少?...
查看>>
给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐...
查看>>
思维导图工具XMind
查看>>
兰顿蚂蚁
查看>>
error C2448 函数样式初始值设定项类似函数定义
查看>>
android rawquery和query的比较
查看>>
redis的安装配置
查看>>
poj 2299 Ultra-QuickSort
查看>>
js的server worker创建子进程
查看>>
第二周--------总结
查看>>
告诉你吧,一套皮肤在winform与wpf开发模式下实现的界面效果同样精彩,winform界面和wpf界面。...
查看>>
iis7.5配置.net mvc注意事项
查看>>