[BZOJ4318] WJMZBMR打osu! / Easy (期望DP)
题目链接
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)的更多相关文章
- 洛谷P1365 WJMZBMR打osu! / Easy——期望DP
题目:https://www.luogu.org/problemnew/show/P1365 平方和怎样递推? 其实就是 (x+1)^2 = x^2 + 2*x + 1: 所以我们要关注这里的 x — ...
- 【bzoj4318】【OSU!】期望dp——维护多个期望值递推
[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62369739 Description osu 是 ...
- WJMZBMR打osu! / Easy
WJMZBMR打osu! / Easy 有一个由o,x,?组成的长度为n的序列,?等概率变为o,x,定义序列权值为连续o的长度o的平方之和,询问权值的期望, 解 注意到权值不是简单的累加关系,存在平方 ...
- luogu P1365 WJMZBMR打osu! / Easy(期望DP)
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是 ...
- 2018.08.30 bzoj4318: OSU!(期望dp)
传送门 简单期望dp. 感觉跟Easy差不多,就是把平方差量进阶成了立方差量,原本维护的是(x+1)2−x2" role="presentation" style=&qu ...
- 【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次点击要做,成功了就是 ...
- [Luogu1365] WJMZBMR打osu! / Easy
Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 \(n\) 次点击要做,成功了就是o,失败了就是x,分数是按com ...
- 洛谷 P1365 WJMZBMR打osu! / Easy
题目背景 原 维护队列 参见P1903 题目描述 某一天\(WJMZBMR\)在打\(osu~~~\)但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有\(n\)次点击要做,成功 ...
随机推荐
- cpp代码调试,调试扑克牌的代码
#include <iostream> #include <vector> #include <algorithm> using namespace std; cl ...
- NSOperation、NSOperationQueue
NSOperation.NSOperationQueue NSOperation 和 NSOperationQueue 配合使用也能实现多线程. NSOperation 继承于 NSObject,是一 ...
- A. Vitya in the Countryside
A. Vitya in the Countryside time limit per test 1 second memory limit per test 256 megabytes input s ...
- poj3525 Most Distant Point from the Sea
题目描述: vjudge POJ 题解: 二分答案+半平面交. 半径范围在0到5000之间二分,每次取$mid$然后平移所有直线,判断半平面交面积是否为零. 我的eps值取的是$10^{-12}$,3 ...
- 概括的描述一下Spring注册流程
Spring经过大神们的构思.编码,日积月累而来,所以,对其代码的理解也不是一朝一夕就能快速完成的.源码学习是枯燥的,需要坚持!坚持!坚持!当然也需要技巧,第一遍学习的时候,不用关注全部细节,不重要的 ...
- 封装一个优雅的element ui表格组件
现在做后台系统用vue + elementUI 的越来越多,那element ui的 el-table 组件肯定也离不开.虽然element ui的table组件很好.但是表格和分页是分离的.每次写表 ...
- HTTP认证之基本认证——Basic(一)
导航 HTTP认证之基本认证--Basic(一) HTTP认证之基本认证--Basic(二) HTTP认证之摘要认证--Digest(一) HTTP认证之摘要认证--Digest(二) 一.概述 Ba ...
- HDU 5514 Frogs 欧拉函数
题意: 有\(m(1 \leq m \leq 10^9)\)个石子排成一圈,编号分别为\(0,1,2 \cdots m-1\). 现在在\(0\)号石头上有\(n(1 \leq n \leq 10^4 ...
- Python动态属性和特性(二)
内置的property经常用作装饰器,但它其实是一个类.在Python中,函数和类通常可以互换,因为二者都是可调用对象,而且没有实例化的new运算符,所以调用构造方法和调用工厂函数没有区别,只要能返回 ...
- Mantis安装与配置
什么是Mantis MantisBT is a free popular web-based bugtracking system (feature list). It is written in t ...