洛谷 P1365 WJMZBMR打osu! / Easy
题目背景
原 维护队列 参见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的更多相关文章
- 洛谷P1365 WJMZBMR打osu! / Easy——期望DP
题目:https://www.luogu.org/problemnew/show/P1365 平方和怎样递推? 其实就是 (x+1)^2 = x^2 + 2*x + 1: 所以我们要关注这里的 x — ...
- 洛谷 1365 WJMZBMR打osu! / Easy
题目:https://www.luogu.org/problemnew/show/P1365 大水题.记录一下o的期望长度. 关键是(x+1)^2=x^2+2*x+1. #include<ios ...
- P1365 WJMZBMR打osu! / Easy
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 nnn 次点击要做,成功了就是o,失败了 ...
- luogu P1365 WJMZBMR打osu! / Easy(期望DP)
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是 ...
- Luogu P1365 WJMZBMR打osu! / Easy
概率期望专题首杀-- 毒瘤dp 首先根据数据范围推断出复杂度在O(n)左右 但不管怎么想都是n^2-- 晚上躺在床上吃东西的时候(误)想到之前有几道dp题是通过前缀和优化的 而期望的可加性又似乎为此创 ...
- WJMZBMR打osu! / Easy
WJMZBMR打osu! / Easy 有一个由o,x,?组成的长度为n的序列,?等概率变为o,x,定义序列权值为连续o的长度o的平方之和,询问权值的期望, 解 注意到权值不是简单的累加关系,存在平方 ...
- 【洛谷1654/BZOJ4318】OSU!(期望DP)
题目: 洛谷1654 分析: 本人数学菜得要命,这题看了一整天才看明白-- 先说说什么是"期望".不太严谨地说,若离散型随机变量(可以看作"事件")\(X\)取 ...
- P1365 WJMZBMR打osu! / Easy-洛谷luogu
传送门 题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nn次点击要做,成功了就是o,失败 ...
- [Luogu1365] WJMZBMR打osu! / Easy
Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 \(n\) 次点击要做,成功了就是o,失败了就是x,分数是按com ...
随机推荐
- Java进阶08 GUI
GUI(Graphical User Interface)提供了图形化的界面,允许用户以图形的方式与系统进行互动.在GUI推广之前,用户通常要以文本命令的方式来控制计算机.GUI直观的将计算机的功能呈 ...
- ACM学习历程—HDU 5072 Coprime(容斥原理)
Description There are n people standing in a line. Each of them has a unique id number. Now the Ragn ...
- 分立元件封装尺寸及PCB板材工艺与设计实例
分立元件封装尺寸 inch mm (L)mm (w)mm (t)mm (a)mm (b)mm 0201 0603 0.6±0.05 0.30±0.05 0.23±0.05 0.10±0.05 0.60 ...
- BZOJ1636&&1699:[USACO2007JAN]Balanced Lineup
浅谈\(RMQ\):https://www.cnblogs.com/AKMer/p/10128219.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...
- 如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境
pyenv 和virtualenv分别是干什么的? pyenv帮助你在一台机上建立多个版本的python环境, 并提供方便的切换方法. virtualenv则就是将一个目录建立为一个虚拟的python ...
- const关键字祥解
为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...
- uboot启动参数设置分类及方法
一.nfs启动内核与根文件系统,内核与根文件系统都在nfs上 bootargs=noinitrd root=/dev/nfs rw nfsroot=192.168.0.1:/home/tekkaman ...
- TS学习之枚举
使用枚举可以定义一些有名字的数字常量 enum Test{ one = 1, two, three, four } console.log(Test); /*{ '1': 'one', '2': 't ...
- project online get approvals task data 获取审批待办任务接口
调用接口地址:重要 http://xxxx/sites/pwa/_vti_bin/PSI/ProjectServer.svc Header 三个必要参数: 其中SOAPAction写死就行,如果是on ...
- 利用httpclient和mysql模拟搜索引擎
数据抓取模块 package crowling1; import java.sql.CallableStatement; import java.sql.Connection; import java ...