题解 洛谷P1365 WJMZBMR打osu! / Easy

Date 2019.7.28


题目大意

给出一个长度为n的由o,x,?组成的字符串,对于每连续的a个o,就有a2分。同时,对于任意的?,有50%的概率为o,有50%的概率为x。求解最后期望得到的分数

思路

首先,我们能够看出这道题是一道递推题
那么状态和转移分别时什么呢?

  • 状态

    不难发现,只有最后一个连续的o组成的字符串的长度对我们的递推有影响。于是,我们不妨设一个b数组,记录原字符串到i为止的末尾有几个o。此外,还应有一个记录答案的a数组记录原字符串到i为止期望得到的分数

  • 转移

    显然,我们在转移的时候需要分3种情况。

    1.si=o

    此时,b数组的转移十分简单,即bi=bi−1+1b_i=b_{i-1}~+1bi​=bi−1​ +1而在a数组转移时,我们可以先减去bi-1得的分数,再加上bi得到的分数,即ai=ai−1−bi−1×bi−1+bi×bia_i=a_{i-1}-b_{i-1}\times b_{i-1{}}+b_i\times b_iai​=ai−1​−bi−1​×bi−1​+bi​×bi​化简可得ai=ai−1+2×bi−1+1a_i=a_{i-1}+2\times b_{i-1}+1ai​=ai−1​+2×bi−1​+1

    2.si=x

    这种情况的转移是最简单的。bi=0,ai=ai−1b_i=0,a_i=a_{i-1}bi​=0,ai​=ai−1​

    3.si=?

    这是唯一一种涉及到概率和期望这方面知识的情况。此时,转移应为每件事件可得的分数乘以对应事件发生的概率之和。也就是应包含为o时的得分和为x时的得分乘上它们对应的概率。具体写成式子为bi=(bi−1+1)÷2+0÷2;ai=(ai−1+2×bi−1+1)÷2+ai−1÷2b_i=(b_{i-1}+1)\div 2+0\div 2;a_i=(a_{i-1}+2\times b_{i-1}+1)\div 2+a_{i-1}\div 2bi​=(bi−1​+1)÷2+0÷2;ai​=(ai−1​+2×bi−1​+1)÷2+ai−1​÷2

下面附上本人的代码

#include<bits/stdc++.h>
using namespace std;int n;
char c[300009];
double a[300009],b[300000];int main ()
{scanf("%d",&n);scanf("%s",c+1);for (int i=1;i<=n;i++){if (c[i]=='o'){b[i]=b[i-1]+1;a[i]=a[i-1]+2*b[i-1]+1;continue;}if (c[i]=='x'){b[i]=0;a[i]=a[i-1];continue;}b[i]=(b[i-1]+1+0)/2;a[i]=(a[i-1]+2*b[i-1]+1)/2+a[i-1]/2;}printf("%.4lf\n",a[n]);return 0;
}

尾记

这是我踏入OI许多年以来第一次尝试写博客,也是我第一次使用Markdown编辑器,有许多不足的地方,我定会在以后不断努力改正。
同时,这也是我2019年暑假在正睿集训的第一天。今天老师讲了一天的概率与期望,于是我就做了这道题。
希望当我回过头来再看这篇博客的时候,能回忆起我需要的东西

题解 洛谷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 {期望DP}

    题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...

  3. 洛谷P1365 WJMZBMR打osu 题解

    题目链接 分析: 令fif_ifi​表示前iii位的期望分数:gig_igi​表示从第iii位往前,期望有多少的连续的'o' 每一位分为三种情况转移: 1.当前位为'x': 显然有: gi=0,fi= ...

  4. 洛谷 1365 WJMZBMR打osu! / Easy

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

  5. P1365 WJMZBMR打osu! / Easy(维护两种期望的简单dp)

    P1365 WJMZBMR打osu! / Easy 又被我轻轻松松切掉了呢 定义dp[i]dp[i]dp[i]为[i,n][i,n][i,n]获得分数的期望 那么显然dp[n+1]=0dp[n+1]= ...

  6. 概率与期望——P1365 WJMZBMR打osu! / Easy

    概率与期望--P1365 WJMZBMR打osu! / Easy 题目 算法与分析 Code 反思与总结 题目 P1365 WJMZBMR打osu! / Easy 算法与分析 通过读题我们知道,有oo ...

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

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

  8. P1365 WJMZBMR打osu! / Easy 概率论递归类型

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

  9. P1365 WJMZBMR打osu! / Easy

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

最新文章

  1. 初识FPGA(一)(初步介绍FPGA)
  2. 今日arXiv精选 | 29篇顶会论文:ACM MM/ ICCV/ CIKM/ AAAI/ IJCAI
  3. STL之vetor 排序
  4. 【Todo】各种语言里面的for循环 loop
  5. P1117-[NOI2016]优秀的拆分【SA】
  6. sql中有一些保留字,当你的字段名是它的保留字时,这个时候sql语句的字段不加``就会报错...
  7. Struts2 - 常用的constant总结
  8. SqlServer中使用游标进行双重遍历
  9. SPSS PROCESS插件安装及使用【SPSS 046期】
  10. 创业公司失败的20大原因 没市场需求排第一
  11. ffmpeg将文件转码后推向服务器,FFmpeg转码服务器搭建
  12. 企业为什么需要一套固定资产管理系统
  13. iframe 透明参数
  14. 国家计算机机房地址,国家电子计算机机房设计规范..doc
  15. 卡尔曼滤波原理介绍及算法实现
  16. python股票行情接口实时获取股市数据
  17. ValueError: Input 0 of node ... was passed float from ... incompatible with expected float_ref.
  18. Centos Linux破解开机密码
  19. AFL++: Combining Incremental Steps of Fuzzing Research
  20. linux进不去root,进不了root

热门文章

  1. PHP投简历没人回,投简历后没有回复怎么办?
  2. 用python画竹子_竹蜻蜓Basic简易入门
  3. c#读取mdb文件(c#连接ACCESS数据库)
  4. 经典方法论:麦肯锡解决问题的7个步骤,七步分析法,值得学习!
  5. Android 监听双卡信号强度
  6. html5手机不能自动播放音乐,解决 iPhone 微信 H5 无法自动播放音乐问题
  7. 「crontab」- 周期任务的配置文件 @20210308
  8. 眉山市职称计算机成绩,眉山市2014年第5次(10月份)全国职称计算机考试成绩
  9. 无线监控系统在道路交通上的优势
  10. Golang知识点总结