Description

某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(

我们来简化一下这个游戏的规则

有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o。

比如ooxxxxooooxxx,分数就是2*2+4*4=4+16=20。

Sevenkplus闲的慌就看他打了一盘,有些地方跟运气无关要么是o要么是x,有些地方o或者x各有50%的可能性,用?号来表示。

比如oo?xx就是一个可能的输入。

那么WJMZBMR这场osu的期望得分是多少呢?

比如oo?xx的话,?是o的话就是oooxx => 9,是x的话就是ooxxx => 4

期望自然就是(4+9)/2 =6.5了

Input

第一行一个整数n,表示点击的个数

接下来一个字符串,每个字符都是ox?中的一个

Output

一行一个浮点数表示答案

四舍五入到小数点后4位

如果害怕精度跪建议用long double或者extended

Sample Input

4

????

Sample Output

4.1250

n<=300000

osu很好玩的哦

WJMZBMR技术还行(雾),x基本上很少呢

Source

我们都爱GYZ杯


一道简单的期望dp。

先转移最长期望后缀长度,然后转移答案。

即用f[i]表示从i开始的后缀的期望连续o长度,g[i]表示前i个字母的期望贡献。

然后就可以转移了。

注意到如果第i个是o的期望是p。

那么有状态转移方程:

f[i]=(f[i−1]+1)∗p" role="presentation" style="position: relative;">f[i]=(f[i−1]+1)∗pf[i]=(f[i−1]+1)∗p

g[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗p" role="presentation" style="position: relative;">g[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗pg[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗p

然后化简第二个式子。

=>g[i]=g[i−1]+(2∗f[i−1]+1)∗p" role="presentation" style="position: relative;">g[i]=g[i−1]+(2∗f[i−1]+1)∗pg[i]=g[i−1]+(2∗f[i−1]+1)∗p

代码:

#include<bits/stdc++.h>
#define N 300005
using namespace std;
char s[N];
int n;
double f[N],g[N];
int main(){
    scanf("%d%s",&n,s+1);
    for(int i=1;i<=n;++i){
        double tmp;
        if(s[i]=='o')tmp=1.0;
        else if(s[i]=='x')tmp=0.0;
        else tmp=0.5;
        f[i]=(f[i-1]+1.0)*tmp,g[i]=g[i-1]+(f[i-1]*2.0+1.0)*tmp;
    }
    printf("%.4lf",g[n]);
    return 0;
}

2018.08.30 Tyvj1952 Easy(期望dp)的更多相关文章

  1. 2018.08.30 花园(期望dp)

    题目背景 SCOI2017 DAY2 T1 题目描述 小 A 的花园的长和宽分别是 L,H .小 A 喜欢在花园里做游戏.每次做游戏的时候,他都先把花园均匀分割成 L×H 个小方块,每个方块的长和宽都 ...

  2. 【BZOJ3450】Tyvj1952 Easy 期望DP

    [BZOJ3450]Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是 ...

  3. 2018.08.30 游戏(概率dp)

    题目描述 Alice 和 Bob 两个人正在玩一个游戏,游戏有很多种任务,难度为 p 的任务(p是正整数),有 1/(2^p) 的概率完成并得到 2^(p-1) 分,如果完成不了,得 0 分.一开始每 ...

  4. BZOJ 3450 Tyvj1952 Easy ——期望DP

    维护$x$和$x^2$的期望递推即可 #include <map> #include <ctime> #include <cmath> #include <q ...

  5. 2018.08.30 bzoj4318: OSU!(期望dp)

    传送门 简单期望dp. 感觉跟Easy差不多,就是把平方差量进阶成了立方差量,原本维护的是(x+1)2−x2" role="presentation" style=&qu ...

  6. 2018.08.30 bzoj4720: [Noip2016]换教室(期望dp)

    传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: ...

  7. bzoj 3450 Tyvj1952 Easy (概率dp)

    3450: Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是o,失败 ...

  8. Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划

    3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 431  Solved: 325[Submit][Status] ...

  9. 【BZOJ3450】Easy [期望DP]

    Easy Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~ ...

随机推荐

  1. Delphi Berlin 窗体代码分离风格 回到Delphi7传统风格

    回到Delphi7传统风格 Floating Form Designer You can now detach the form designer in both, VCL and FireMonke ...

  2. 怎样在本地windows安装和配置zookeeper

    Zookeeper是什么?有什么用? Zookeeper是一个分布式协调服务. 作用:为用户的分布式应用程序提供协调服务.  zookeeper在底层其实只提供了两个功能: 1.管理(存储,读取)用户 ...

  3. parseInt 和 parseFloat 实现字符串转换为数字

    age = '18' a = parseInt(age) b = parseFloat(age)

  4. as3 文档类引用

    /**文档类引用**/ public static var main:CoverMain; public function CoverMain() { main=this; }

  5. win10 ubuntu双系统安装后无法引导进入ubuntu

    之前按照先装windows后装ubuntu的方式装的系统,都可以引导到ubuntu,无论是将ubuntu挂在到/boot在windows用easy BCD建立ubuntu引导,还是将ubuntu挂在到 ...

  6. binlog、redo log、undo log区别

    root@(none) 04:17:18>show variables like 'innodb_log_group_home_dir';+--------------------------- ...

  7. 移去OleContainer的黑边框

    //禁止双击打开word编辑 olecontainer1.AutoActivate := aaManual; //禁止右键菜单 olecontainer1.AutoVerbMenu := False; ...

  8. docker问题

    Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work. 解决办法: # vim /usr/lib/sysctl ...

  9. 如何设置maven的local repository目录

    step1:默认会放在~/.m2/repository目录下 (“~”代表用户的目录,比如windows下一般都是C:\Documents and Settings\[你的用户名]\.由于“Docum ...

  10. js base64转二进制

    base64 编码规则 1.把3个字符变成4个字符.2.每76个字符加一个换行符.3.最后的结束符也要处理. 转换前 11111101, 11111111, 11111111 (二进制) 转换后 00 ...