题目链接

Solution

Wa,我是真的被期望折服了,感觉这道题拿来练手正好.

DP的难度可做又巧妙...

我们定义:

\(f[i]\) 代表到第 \(i\) 次点击的时候的最大答案.

\(g[i]\) 代表到第 \(i\) 此点击的 \(o\) 的期望长度.

然后看转移:

1.此时为 \(o\) ,那么我可以直接计算答案。

由于 \((x+1)^2=x^2+2x+1\) ,所以我们得到转移方程:

$$f[i]=f[i-1]+2*g[i-1]+1$$

同时由于此时 \(o\) 的长度已经增加,所以同时 \(g[i]=g[i-1]+1\).

2.此时为 \(x\),同样直接统计答案.

\(f[i]=f[i-1]\) , \(g[i]=0\).

3.此时为 \(?\) ,那么我们对于以上两种情况都有 \(0.5\) 的概率.

然后直接转移:

$$f[i]=0.5(f[i-1]+2g[i-1]+1+f[i-1])$$

$$g[i]=0.5*(g[i-1]+1)$$

然后最后面 \(f[n]\) 即为答案


Code

#include<bits/stdc++.h>
#define db double
using namespace std;
const int maxn=300008;
db f[maxn],g[maxn];
int n;
string ch;
int main()
{
cin>>n;
ch='*';
string s; cin>>s;
ch+=s;
for(int i=1;i<=n;i++)
{
if(ch[i]=='o')
{
f[i]=f[i-1]+2*g[i-1]+1;
g[i]=g[i-1]+1;
}
if(ch[i]=='x')
{
f[i]=f[i-1];
g[i]=0;
}
if(ch[i]=='?')
{
f[i]=0.5*(f[i-1]+2*g[i-1]+1+f[i-1]);
g[i]=0.5*(g[i-1]+1);
}
}
printf("%.4lf",f[n]);
}

[BZOJ4318] WJMZBMR打osu! / Easy (期望DP)的更多相关文章

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

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

  2. 【bzoj4318】【OSU!】期望dp——维护多个期望值递推

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62369739 Description osu 是 ...

  3. WJMZBMR打osu! / Easy

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

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

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

  5. 2018.08.30 bzoj4318: OSU!(期望dp)

    传送门 简单期望dp. 感觉跟Easy差不多,就是把平方差量进阶成了立方差量,原本维护的是(x+1)2−x2" role="presentation" style=&qu ...

  6. 【BZOJ3450】Easy [期望DP]

    Easy Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~ ...

  7. 【BZOJ3450】Tyvj1952 Easy 期望DP

    [BZOJ3450]Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是 ...

  8. [Luogu1365] WJMZBMR打osu! / Easy

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

  9. 洛谷 P1365 WJMZBMR打osu! / Easy

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

随机推荐

  1. cpp代码调试,调试扑克牌的代码

    #include <iostream> #include <vector> #include <algorithm> using namespace std; cl ...

  2. NSOperation、NSOperationQueue

    NSOperation.NSOperationQueue NSOperation 和 NSOperationQueue 配合使用也能实现多线程. NSOperation 继承于 NSObject,是一 ...

  3. A. Vitya in the Countryside

    A. Vitya in the Countryside time limit per test 1 second memory limit per test 256 megabytes input s ...

  4. poj3525 Most Distant Point from the Sea

    题目描述: vjudge POJ 题解: 二分答案+半平面交. 半径范围在0到5000之间二分,每次取$mid$然后平移所有直线,判断半平面交面积是否为零. 我的eps值取的是$10^{-12}$,3 ...

  5. 概括的描述一下Spring注册流程

    Spring经过大神们的构思.编码,日积月累而来,所以,对其代码的理解也不是一朝一夕就能快速完成的.源码学习是枯燥的,需要坚持!坚持!坚持!当然也需要技巧,第一遍学习的时候,不用关注全部细节,不重要的 ...

  6. 封装一个优雅的element ui表格组件

    现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...

  7. HTTP认证之基本认证——Basic(一)

    导航 HTTP认证之基本认证--Basic(一) HTTP认证之基本认证--Basic(二) HTTP认证之摘要认证--Digest(一) HTTP认证之摘要认证--Digest(二) 一.概述 Ba ...

  8. HDU 5514 Frogs 欧拉函数

    题意: 有\(m(1 \leq m \leq 10^9)\)个石子排成一圈,编号分别为\(0,1,2 \cdots m-1\). 现在在\(0\)号石头上有\(n(1 \leq n \leq 10^4 ...

  9. Python动态属性和特性(二)

    内置的property经常用作装饰器,但它其实是一个类.在Python中,函数和类通常可以互换,因为二者都是可调用对象,而且没有实例化的new运算符,所以调用构造方法和调用工厂函数没有区别,只要能返回 ...

  10. Mantis安装与配置

    什么是Mantis MantisBT is a free popular web-based bugtracking system (feature list). It is written in t ...