luogu P1365 WJMZBMR打osu! / Easy(期望DP)
题目背景
原 维护队列 参见P1903
题目描述
某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(
我们来简化一下这个游戏的规则
有nnn次点击要做,成功了就是o,失败了就是x,分数是按combo计算的,连续aaa个combo就有a×aa\times aa×a分,combo就是极大的连续o。
比如ooxxxxooooxxx,分数就是2×2+4×4=4+16=202 \times 2 + 4 \times 4 = 4 +16=202×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(4+9)/2 =6.5(4+9)/2=6.5了
输入输出格式
输入格式:
第一行一个整数nnn,表示点击的个数
接下来一个字符串,每个字符都是o,x,?中的一个
输出格式:
一行一个浮点数表示答案
四舍五入到小数点后444位
如果害怕精度跪建议用long double或者extended
输入输出样例
说明
osu很好玩的哦
WJMZBMR技术还行(雾),x基本上很少呢
题解
这个题有点意思。
dp[i]代表到第i个位置总权值的期望。
f[i]代表到第i个位置连续的o的长度。
然后转移的时候分情况:
s[i]=='x'
dp[i]=dp[i-1];f[i]=0;
s[i]=='o'
dp[i]=(g[i-1]+1)^2=g[i-1]^2+2*g[i-1]+1=f[i-1]+2*g[i-1]+1;
f[i]=f[i-1]+1;
s[i]=='?'
dp[i]=0.5*(f[i-1]+2*g[i-1]+1)+0.5*f[i-1];
f[i]=(g[i-1]+1)*0.5+0*0.5;
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int n;
char s[N];
double dp[N],f[N];
int main(){
scanf("%d",&n);
scanf("%s",s+);
for(int i=;i<=n;i++){
if(s[i]=='?'){
f[i]=(f[i-]+1.0)/2.0;
dp[i]=dp[i-]+0.5+f[i-];
}
if(s[i]=='o'){
f[i]=f[i-]+1.0;
dp[i]=dp[i-]+2.0*f[i-]+1.0;
}
if(s[i]=='x'){
dp[i]=dp[i-];
f[i]=0.0;
}
}
printf("%.4lf",dp[n]);
return ;
}
luogu P1365 WJMZBMR打osu! / Easy(期望DP)的更多相关文章
- 洛谷P1365 WJMZBMR打osu! / Easy——期望DP
题目:https://www.luogu.org/problemnew/show/P1365 平方和怎样递推? 其实就是 (x+1)^2 = x^2 + 2*x + 1: 所以我们要关注这里的 x — ...
- Luogu P1365 WJMZBMR打osu! / Easy
概率期望专题首杀-- 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2-- 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创 ...
- [BZOJ4318] WJMZBMR打osu! / Easy (期望DP)
题目链接 Solution Wa,我是真的被期望折服了,感觉这道题拿来练手正好. DP的难度可做又巧妙... 我们定义: \(f[i]\) 代表到第 \(i\) 次点击的时候的最大答案. \(g[i] ...
- 洛谷 P1365 WJMZBMR打osu! / Easy
题目背景 原 维护队列 参见P1903 题目描述 某一天\(WJMZBMR\)在打\(osu~~~\)但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有\(n\)次点击要做,成功 ...
- P1365 WJMZBMR打osu! / Easy
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 nnn 次点击要做,成功了就是o,失败了 ...
- WJMZBMR打osu! / Easy
WJMZBMR打osu! / Easy 有一个由o,x,?组成的长度为n的序列,?等概率变为o,x,定义序列权值为连续o的长度o的平方之和,询问权值的期望, 解 注意到权值不是简单的累加关系,存在平方 ...
- P1365 WJMZBMR打osu! / Easy-洛谷luogu
传送门 题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nn次点击要做,成功了就是o,失败 ...
- 【BZOJ3450】Easy [期望DP]
Easy Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~ ...
- 【BZOJ3450】Tyvj1952 Easy 期望DP
[BZOJ3450]Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是 ...
随机推荐
- 路飞学城Python-Day19(practise)
# 特性1.继承:2.多态:3.封装 # 1.继承的用处:通过继承就可以解决类与类之间的代码冗余关系 # 2.多态的用处:1.增加了程序的灵活性,以不变应万变,使用者都是同一种形式去调用(func(a ...
- node——REFL介绍
看视频笔记 REFL全称:Read-Eval-Loop(交互式解释器) R 读取 -读取用户输入,解析输入了javascript数据结构并存储在内存中 E 执行 -执行输入的数据结构 P 打印 -输出 ...
- webpack安装,npm WARN optional SKIPPING OPTIONAL DEPENDENCY,npm WARN notsup SKIPPING OPTIONAL DEPENDENCY警告
npm install webpack -g//全局安装webpack 电脑上安装完后: 其中有两个警告: npm WARN optional SKIPPING OPTIONAL DEPENDENCY ...
- 在用HTML+css写页面中遇到的问题
一.清除浮动. (1)verflow:hidden;这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很 了解.一提到清除浮动,我们就会 ...
- CSS Grid(CSS网格)
Grid被设计来做一些Flexbox不能做的事情,所以不是被设计来取代Flexbox的. flexbox 一维的 Grid 二维的 总结: Grid Items作用在Grid Container的直 ...
- 使用Git--将本地项目提交到Github
前置工作 1. 在GitHub官网注册一个GitHub账号: 2. 安装git工具,在Git官网下载对应版本的Git: 方法一: 1. 进入Github首页,点击New repository新建一个项 ...
- Virtual Box 新建一个虚拟机安装系统(补充:WIN7 64 bit 系统虚拟机无法安装 64 bit 系统问题)
1.安装Virtual Box好后,点击新建 2.配置内存大小,这个根据自己需要配置就好 3.创建虚拟硬盘 这里选择固定分配.动态分配都可以,接下来就分配硬盘大小了 4.新建好后我们点击刚才建立的虚拟 ...
- IE6 浏览器常见兼容问题 共23个
1.<!DOCTYPE HTML>文档类型的声明. 产生条件:IE6浏览器,当我们没有书写这个文档声明的时候,会触发IE6浏览器的怪异解析现象: 解决办法:书写文档声明. 2.不同浏览器当 ...
- PL/SQL基本语法
*2.PL/SQL基本语法 1)匿名块 一段不能在数据库存储的PL/SQL. 基本结构如下: DECLARE //变量的声明定义区域(可省略) BEGIN //业务处理 ...
- 2015 Multi-University Training Contest 4 hdu 5334 Virtual Participation
Virtual Participation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...