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

  • 题目
  • 算法与分析
  • Code
  • 反思与总结

题目

P1365 WJMZBMR打osu! / Easy

算法与分析

通过读题我们知道,有ooo,xxx,???三种操作,每一种都有对应的处理方式:
No.1—— ooo
题目中说到:分数是按combo计算的,连续a个combo就有a×a分,combo就是极大的连续o,则记combo * len,且有f[i]=f[i−1]+(len2−(len−1)2)f[i]=f[i-1]+(len^2-(len-1)^2)f[i]=f[i−1]+(len2−(len−1)2)进一步化简可以得到f[i]=f[i−1]+2∗len+1f[i]=f[i-1]+2*len+1f[i]=f[i−1]+2∗len+1这就是相对应的关系式啦。别忘了len++len++len++哦;

No.2—— xxx
遇到xxx则表明combocombocombo中断,lenlenlen恢复到初始值000,且有f[i]=f[i−1]f[i]=f[i-1]f[i]=f[i−1]这就是相对应的关系式啦。

No.3—— ???
这是比较复杂的一种,???可有 ooo 和 xxx 两种可能,于是要取它的期望值,则有f[i]=f[i−1]+(len2−(len−1)2+02)f[i]=f[i-1]+(\dfrac{len^2-(len-1)^2+0}{2})f[i]=f[i−1]+(2len2−(len−1)2+0​)进一步化简可以得到f[i]=f[i−1]+len+12f[i]=f[i-1]+len+\dfrac{1}{2}f[i]=f[i−1]+len+21​然后lenlenlen的变化亦是如此len=len+12len= \dfrac{len+1}{2}len=2len+1​。

具体代码如下:

Code

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#define rg register
using namespace std;
typedef long long ll;
inline int sread()
{int x=0,f=1;char c=getchar();while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();} return f*x;
}
int n;
char c[300010];
double len,ans,f[300010];
int main()
{n=sread();for(rg int i=1;i<=n;++i) cin>>c[i];f[0]=0;for(rg int i=1;i<=n;++i){if(c[i]=='o')       { f[i]=f[i-1]+2*len+1; len++;} else if(c[i]=='x')  { f[i]=f[i-1]; len=0; }else if(c[i]=='?') { f[i]=f[i-1]+len+0.5; len=(len+1)/2;} }printf("%.4lf",f[n]);return 0;
}

反思与总结

要善于根据条件手推关系式,这种题关系式很重要,代码其实并不麻烦。

小彩蛋:还记得前面题目描述里面的osu吗?
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

链接在这里 → osu入口

概率与期望——P1365 WJMZBMR打osu! / Easy相关推荐

  1. 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]= ...

  2. 题解 洛谷P1365 WJMZBMR打osu! / Easy

    题解 洛谷P1365 WJMZBMR打osu! / Easy Date 2019.7.28 题目大意 给出一个长度为n的由o,x,?组成的字符串,对于每连续的a个o,就有a2分.同时,对于任意的?,有 ...

  3. 【ybtoj高效进阶6-6-2】 期望分数/WJMZBMR打osu! / Easy 【luogu P1365】

    期望分数[ybtoj高效进阶6-6-2] WJMZBMR打osu! / Easy [luogu P1365] 题目描述: 给定一个长度为n的由 o,x,? 组成的字符串.计算分数的规则如下:连续 a ...

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

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

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

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

  6. P1365 WJMZBMR打osu! / Easy (期望dp)

    题意: 解法: 将题目给的字符串看作是01序列,成功为1失败为0.设x当前操作进行连续1的个数.(x+1)2−x2=x2+2x+1−x2=2x+1即每新增一个1,那么分数会增加2x+1.令cnt[i] ...

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

    传送门 期望题总是很有趣,甚至很有速签蓝题的快乐感 假设在当前含有 ??? 的连续段中,??? 前的连续 ooo 个数为 combocombocombo,而该连续段前得到的分数为 sumsumsum, ...

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

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

  9. P1365 WJMZBMR打osu! / Easy

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

最新文章

  1. 相当全面的Numpy使用总结.pptx
  2. linux分区详解!
  3. 关于fseek和文件ab+打开方式的问题
  4. C#session共享+redis_Shiro权限管理框架(二):Shiro结合Redis实现分布式环境下的Session共享...
  5. 用solidity语言开发代币智能合约
  6. scala apply方法 笔记
  7. Python爬虫的requests模块你真的学会了吗?来看看这些高级用法!
  8. Mac下配置Android环境
  9. 【问题汇总】Ubuntu使用常见问题
  10. pythoncde-实战1--坐标生成
  11. CGLIB动态代理--实例/原理
  12. VLAN与trunk配置 实验 思科模拟器Cisco
  13. 今天发一个制作课工场论坛发帖
  14. 如何快速查询手机在网状态
  15. Java——文本框设置背景颜色、字体样式和颜色
  16. 字节跳动2019春招算法题
  17. 给AWStats关键词统计增加去百度,谷歌等搜索引擎的站内查询链接
  18. 打流工具trex使用
  19. centos7 RPM命令安装.rpm文件操作
  20. c语言兑换100人民币,100 元人民币有几多种换零方式

热门文章

  1. 小程序Springboot基层慢性病信息管理系统毕业设计-附源码221550
  2. 跨境电商红海和蓝海代表什么-跨境知道
  3. 十一:以理论结合实践方式梳理前端 React 框架 ———框架架构
  4. 自适应边缘识别中值滤波消除脉冲噪声【论文笔记】
  5. 顺利拿到亚马逊高薪offer!从投简历到谈薪,全流程经验总结回馈大家!
  6. 建造模式Builder
  7. html查看器停止运行器,是否停止运行此脚本?详解电脑提示是否停止运行此脚本的6种方法...
  8. 这十一个副业在家就可以完成,疫情在家也有收入,建议收藏
  9. IC设计流程之工具篇——EDA软件
  10. Android获取IP地址