题目背景

原 维护队列 参见P1903

题目描述

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

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

有\(n\)次点击要做,成功了就是\(`o`\),失败了就是\(`x`\),分数是按\(combo\)计算的,连续\(a\)个\(combo\)就有\(a\times a\)分,\(combo\)就是极大的连续\(`o`\)。

比如\(`ooxxxxooooxxx`\),分数就是\(2 \times 2 + 4 \times 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\)了

输入输出格式

输入格式:

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

接下来一个字符串,每个字符都是\(`o`,`x`,`?`\)中的一个

输出格式:

一行一个浮点数表示答案

四舍五入到小数点后\(4\)位

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

输入输出样例

输入样例#1:

4
????

输出样例#1:

4.1250

说明

\(osu\)很好玩的哦

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

思路:用dp数组表示期望值,用f数组表示到某位置时连续的o的个数。然后进行分类讨论:

1.当\(s[i]\)为\(’o’\)时,\(dp[i]=dp[i-1]+2×f[i-1]+1,f[i]=f[i-1]+1\);

因为\((x+1)^2=x^2+2 \times x + 1\)

2.当\(s[i]\)为\(‘x’\)时,\(dp[i]=dp[i-1],f[i]=0\);

3.\(else\) 期望和的平均值就好咯,因为概率都是\(0.5\),所以都乘\(0.5\)相加就可以了。

代码:

#include<cstdio>
#include<cstring>
#define dl double
#define maxn 1000007
using namespace std;
int n;
dl dp[maxn],f[maxn];
char s[maxn];
int main() {
scanf("%d%s",&n,s+1);
int len=strlen(s+1);
for(int i=1;i<=len;++i) {
if(s[i]=='x') dp[i]=dp[i-1],f[i]=0;
else if(s[i]=='o') dp[i]=dp[i-1]+2*f[i-1]+1,f[i]=f[i-1]+1;
else dp[i]=dp[i-1]+f[i-1]+0.5,f[i]=(f[i-1]+1)*0.5;
}
printf("%0.4lf\n",dp[len]);
return 0;
}

洛谷 P1365 WJMZBMR打osu! / Easy的更多相关文章

  1. 洛谷P1365 WJMZBMR打osu! / Easy——期望DP

    题目:https://www.luogu.org/problemnew/show/P1365 平方和怎样递推? 其实就是 (x+1)^2 = x^2 + 2*x + 1: 所以我们要关注这里的 x — ...

  2. 洛谷 1365 WJMZBMR打osu! / Easy

    题目:https://www.luogu.org/problemnew/show/P1365 大水题.记录一下o的期望长度. 关键是(x+1)^2=x^2+2*x+1. #include<ios ...

  3. P1365 WJMZBMR打osu! / Easy

    题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 nnn 次点击要做,成功了就是o,失败了 ...

  4. luogu P1365 WJMZBMR打osu! / Easy(期望DP)

    题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是 ...

  5. Luogu P1365 WJMZBMR打osu! / Easy

    概率期望专题首杀-- 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2-- 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创 ...

  6. WJMZBMR打osu! / Easy

    WJMZBMR打osu! / Easy 有一个由o,x,?组成的长度为n的序列,?等概率变为o,x,定义序列权值为连续o的长度o的平方之和,询问权值的期望, 解 注意到权值不是简单的累加关系,存在平方 ...

  7. 【洛谷1654/BZOJ4318】OSU!(期望DP)

    题目: 洛谷1654 分析: 本人数学菜得要命,这题看了一整天才看明白-- 先说说什么是"期望".不太严谨地说,若离散型随机变量(可以看作"事件")\(X\)取 ...

  8. P1365 WJMZBMR打osu! / Easy-洛谷luogu

    传送门 题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nn次点击要做,成功了就是o,失败 ...

  9. [Luogu1365] WJMZBMR打osu! / Easy

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

随机推荐

  1. linux命令学习笔记(6):rmdir 命令

    今天学习一下linux中命令: rmdir命令.rmdir是常用的命令,该命令的功能是删除空目录,一个目录 被删除之前必须是空的.(注意,rm - r dir命令可代替rmdir,但是有很大危险性.) ...

  2. JEECG datagrid 列表检索条件 添加下拉级联功能

    $("#communityId").change( function(){ var id = $(this).children('option:selected').val(); ...

  3. bzoj 3530: [Sdoi2014]数数 数位dp

    题目 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数. ...

  4. Javascript常用的设计模式详解

    Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...

  5. bzoj 1001 狼抓兔子 —— 平面图最小割(最短路)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题: 建图时看清楚题目的 input ... 代码如下: ...

  6. 用Fiddler2来监听HTTP(记:用skydrive sdk访问时,出错后用Fidder抓包分析)

    最近在写一个关于如何上传文件到skydrive的demo, 用REST上传失败. 安装Telerik的Fiddler后, 可以监听http或者https通信, 然后可以在软件中看到返回的json数据或 ...

  7. Spring 学习十五 AOP

    http://www.hongyanliren.com/2014m12/22797.html 1: 通知(advice): 就是你想要的功能,也就是安全.事物.日子等.先定义好,在想用的地方用一下.包 ...

  8. TreeSet 和TreeMap 排序

    TreeSet 有两种排序方式 1. Java.lang.Comparble+compareTo new TreeSet() 用这种方法必须要求实体类实现Comparable接口,也就是说要求添加到T ...

  9. stm32之内部功能

    本文将提到以下内容: 位带操作 中断 printf重定向 随机数发生器RNG AD/DA DMA 高性能计算能力 加密 ART加速 一.位带操作 在学习51单片机的时候就使用过位操作,通过关键字sbi ...

  10. wdatePicker时间控件的使用

    wdatePicker时间控件的使用 1.引用wdatePicker控件的js <seript src="../../js/My97DatePicker/wdatePicker.js& ...