2018.08.30 Tyvj1952 Easy(期望dp)
Description
某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(
我们来简化一下这个游戏的规则
有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连续a个comb就有a*a分,comb就是极大的连续o。
比如ooxxxxooooxxx,分数就是2*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了
Input
第一行一个整数n,表示点击的个数
接下来一个字符串,每个字符都是ox?中的一个
Output
一行一个浮点数表示答案
四舍五入到小数点后4位
如果害怕精度跪建议用long double或者extended
Sample Input
4
????
Sample Output
4.1250
n<=300000
osu很好玩的哦
WJMZBMR技术还行(雾),x基本上很少呢
Source
我们都爱GYZ杯
一道简单的期望dp。
先转移最长期望后缀长度,然后转移答案。
即用f[i]表示从i开始的后缀的期望连续o长度,g[i]表示前i个字母的期望贡献。
然后就可以转移了。
注意到如果第i个是o的期望是p。
那么有状态转移方程:
f[i]=(f[i−1]+1)∗p" role="presentation" style="position: relative;">f[i]=(f[i−1]+1)∗pf[i]=(f[i−1]+1)∗p
g[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗p" role="presentation" style="position: relative;">g[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗pg[i]=g[i−1]+((f[i−1]+1)2−f[i−1]2)∗p
然后化简第二个式子。
=>g[i]=g[i−1]+(2∗f[i−1]+1)∗p" role="presentation" style="position: relative;">g[i]=g[i−1]+(2∗f[i−1]+1)∗pg[i]=g[i−1]+(2∗f[i−1]+1)∗p
代码:
#include<bits/stdc++.h>
#define N 300005
using namespace std;
char s[N];
int n;
double f[N],g[N];
int main(){
scanf("%d%s",&n,s+1);
for(int i=1;i<=n;++i){
double tmp;
if(s[i]=='o')tmp=1.0;
else if(s[i]=='x')tmp=0.0;
else tmp=0.5;
f[i]=(f[i-1]+1.0)*tmp,g[i]=g[i-1]+(f[i-1]*2.0+1.0)*tmp;
}
printf("%.4lf",g[n]);
return 0;
}
2018.08.30 Tyvj1952 Easy(期望dp)的更多相关文章
- 2018.08.30 花园(期望dp)
题目背景 SCOI2017 DAY2 T1 题目描述 小 A 的花园的长和宽分别是 L,H .小 A 喜欢在花园里做游戏.每次做游戏的时候,他都先把花园均匀分割成 L×H 个小方块,每个方块的长和宽都 ...
- 【BZOJ3450】Tyvj1952 Easy 期望DP
[BZOJ3450]Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是 ...
- 2018.08.30 游戏(概率dp)
题目描述 Alice 和 Bob 两个人正在玩一个游戏,游戏有很多种任务,难度为 p 的任务(p是正整数),有 1/(2^p) 的概率完成并得到 2^(p-1) 分,如果完成不了,得 0 分.一开始每 ...
- BZOJ 3450 Tyvj1952 Easy ——期望DP
维护$x$和$x^2$的期望递推即可 #include <map> #include <ctime> #include <cmath> #include <q ...
- 2018.08.30 bzoj4318: OSU!(期望dp)
传送门 简单期望dp. 感觉跟Easy差不多,就是把平方差量进阶成了立方差量,原本维护的是(x+1)2−x2" role="presentation" style=&qu ...
- 2018.08.30 bzoj4720: [Noip2016]换教室(期望dp)
传送门 一道无脑的期望dp. 用f[i][j][0/1]表示前i堂课提出了j次申请且第i堂课没有(有)提出申请. 这样就可以状态转移了. 然而这题状态转移方程有点长... (主要是情况多... 代码: ...
- bzoj 3450 Tyvj1952 Easy (概率dp)
3450: Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是o,失败 ...
- Bzoj 3450: Tyvj1952 Easy 期望/概率,动态规划
3450: Tyvj1952 Easy Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 431 Solved: 325[Submit][Status] ...
- 【BZOJ3450】Easy [期望DP]
Easy Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 某一天WJMZBMR在打osu~~ ...
随机推荐
- Webservice 返回数据集 DataSet 及Android显示数据集LiveBindings
一.服务端 New TSoapDataModule 添加控件 TDataSetProvider,TClientDataSet,TADOQuery,TADOConnection 添加方法 functio ...
- c++Builder XE6 MD5 加密算法 BASE64 URL 编码
xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...
- 单网卡用双IP上内外网
网络 2008-09-22 17:42 阅读44 评论1 字号: 大 中 小 PC机同时上内外网一例 一个公司内部,一台pc机在上内网的同时,还要求上外网,如何在一块网卡上实现 ...
- as3 文本竖排效果实现
import flash.text.engine.TextBlock; import flash.text.engine.ElementFormat; import flash.text.engine ...
- 子元素margin-top后,跟父元素一起下沉
在一个<div>元素中嵌套一个子div,同时设置子div的margin-top,结果,父元素和子元素一起下沉,留出来个空白区域. 原因就是: 一个盒子如果没有上补白(padd ...
- 基于OpenGL编写一个简易的2D渲染框架-13 使用例子
这是重构渲染器的最后一部分了,将会给出一个 demo,测试模板测试.裁剪测试.半透明排序等等: 上图是本次 demo 的效果图,中间的绿色图形展现的是模板测试. 模板测试 void init(Pass ...
- 值得推荐的C/C++开源框架和库
值得推荐的C/C++开源框架和库 转自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webbench是一个在Linux下 ...
- python语法学习之函数、类、模块
Python中通过使用类(class)和对象(object)来实现面向对象(object-oriented programming,简称OOP)的编程. 面向对象编程的最主要目的是提高程序的重复使用性 ...
- <c:forEach>取得集合数量
这个问题曾经也困扰了我好久,不过以后都没有用过也都忘记了,不过今天在做项目 的时候又遇到了,花费了很久的时间都没有成功.也试了它的很多属性,例如:varStatus.last.${status.cou ...
- iBatis与Hibernate有什么不同?
相同点:屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以访问数据. jdbc api编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节 ...