BZOJ 3450 - Tyvj1952 Easy (期望DP)
描述
某一天 WJMZBMR 在打 osu~~~ 但是他太弱逼了,有些地方完全靠运气:(
我们来简化一下这个游戏的规则:
有 \(n(n\le 300000)\) 次点击要做,成功了就是 o
,失败了就是 x
,分数是按 comb 计算的,连续 \(a\) 个 comb 就有 \(a^2\) 分,comb 就是极大的连续 o
。
比如 ooxxxxooooxxx
,分数就是 \(2\times 2+4\times 4=4+16=20\)。
Sevenkplus 闲的慌就看他打了一盘,有些地方跟运气无关要么是 o
要么是 x
,有些地方 o
或者 x
各有 \(50\%\) 的可能性,用 ?
号来表示。
那么 WJMZBMR 这场 osu 的期望得分是多少呢?
思路:
这个题如果一段一段的处理,实际上并不是很好做。我们观察到 \((x + 1) ^ 2 - x ^ 2 = 2x + 1\),那么根据期望的线性性质,我们可以单独算每一个字符的贡献。我们设 \(dp_i\) 为考虑前 ii 个字符的期望得分,\(l_i\) 为以 \(i\) 为结尾的 comb 的期望长度,\(Comb_i\) 为第 \(i\)个字符,那么有 3 种情况:
- \(s_i = o\) ,则 \(dp_i = dp_{i - 1} + l_{i - 1} * 2 + 1,l_i = l_{i - 1} + 1\)
- \(s_i = x\) ,则 \(dp_i = dp_{i - 1}\)
- \(s_i =\ ?\), 则 \(dP_i = dp_{i - 1} + \frac{l_i*2 + 1}{2},l_i = \frac{l_{i - 1} + 1}{2}\)
对于前两种情况,其实是非常直观的,对于第三种情况,实际上是求了一个平均长度。例如 ?oo
,两种情况的长度 \(l_i\) 分别为 \([0,1,2]\) 和 \([1,2,3]\) ,但是求了平均之后,长度 \(l_i\) 变成了 \([0.5,1.5,2.5]\) ,这样由于我们的贡献是一个关于长度的一次多项式 \((2x + 1)\) ,所以长度平均之后,贡献也相当于求了一个平均,自然能够求得正确的得分期望。
【AC Code】
const int N = 3e5 + 10;
double dp[N], Comb[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n; string s;
cin >> n >> s;
for (int i = 0; i < n; ++i) {
if (s[i] == 'o') {
dp[i] = dp[i - 1] + Comb[i - 1] * 2 + 1;
Comb[i] = Comb[i - 1] + 1;
} else if (s[i] == 'x') {
dp[i] = dp[i - 1];
Comb[i] = 0;
} else {
dp[i] = dp[i - 1] + (Comb[i - 1] * 2 + 1) / 2;
Comb[i] = (Comb[i - 1] + 1) / 2;
}
}
cout << setprecision(4) << fixed << dp[n - 1];
}
思考:如果长度为 \(a\) 的 comb 的贡献为 \(a^3\) 时该如何解决?题目链接:Here
Tips:由于 \((a + 1)^3 - a^3 = 3a^3 + 3a + 1\) ,所以我们要维护 \(a^2\) 和 \(a\) 的期望,注意 \(E_{a^2} \not= E^2_a\),所以维护 \(a^2\) 的期望是必要的。
BZOJ 3450 - Tyvj1952 Easy (期望DP)的更多相关文章
- BZOJ 3450 Tyvj1952 Easy ——期望DP
维护$x$和$x^2$的期望递推即可 #include <map> #include <ctime> #include <cmath> #include <q ...
- Bzoj 3450: Tyvj1952 Easy (期望)
Bzoj 3450: Tyvj1952 Easy 这里放上题面,毕竟是个权限题(洛谷貌似有题,忘记叫什么了) Time Limit: 10 Sec Memory Limit: 128 MB Submi ...
- 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] ...
- bzoj4318 OSU!和bzoj 3450 Tyvj1952 Easy
这俩题太像了 bzoj 3450 Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点 ...
- 【BZOJ3450】Tyvj1952 Easy 期望DP
[BZOJ3450]Tyvj1952 Easy Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下这个游戏的规则有n次点击要做,成功了就是 ...
- BZOJ 3450 Tyvj1952 Easy(期望)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3450 [题目大意] 给出一个字符串,包含o,x和?,一个字符串的得分为 每段连续的o的 ...
- BZOJ 3450: Tyvj1952 Easy [DP 概率]
传送门 题意:$ox?$组成的序列,$?$等概率为$o\ or\ x$,得分为连续的$o$的长度的平方和,求期望得分 一开始没想出来,原因在于不知道如何记录长度 其实我们同时求得分和长度的期望就好了 ...
- BZOJ 3450: Tyvj1952 Easy 数学期望
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) ...
- 【概率】BZOJ 3450:Tyvj1952 Easy
Description 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有n次点击要做,成功了就是o,失败了就是x,分数是按comb计算的,连 ...
随机推荐
- 总结(5)--- Numpy和Pandas库常用函数
二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...
- 华为ar502H物联网边缘计算网关,在容器内控制/dev/do0开关命令
执行以下命令进行开关do继电开关,可以听见电位器声音. echo -en "\x01" > /dev/do0 echo -en "\x00" > ...
- ERP大作业进度(一)
ERP和进销存的区别 ERP(企业资源计划)和进销存(进货.销售和库存管理)是两个不同的概念,尽管它们在企业管理中通常存在交集.以下是它们之间的主要区别: 范围: ERP:ERP系统是一个综合性的.集 ...
- games101-2 透视深度插值矫正与抗锯齿分析
透视深度插值矫正与抗锯齿分析 深度插值的差错原因 透视深度插值公式推导 games101中的错误 msaa与ssaa简要定义 games101中ssaa的实现 games101中msaa的实现 深度插 ...
- IDEA编译器的永久试用设置与基本使用
参考视频: 最通俗易懂的JDK.IDEA的安装使用权威指南 2023新版前端Web开发HTML5+CSS3+移动web视频教程,前端web入门首选黑马程序员 一.安装包下载与安装 官网下载地址 个人使 ...
- 开发必备工具、插件【ME】
工欲善其事,必先利其器,记录自己开发中常用的工具.插件: 慢慢更新... 一.必备 1.Visual Studio.IntelliJ IDEA .Sublime Text 3 2.TeamViewe ...
- 机器人行业数据闭环实践:从对象存储到 JuiceFS
JuiceFS 社区聚集了来自各行各业的前沿科技用户.本次分享的案例来源于刻行,一家商用服务机器人领域科技企业. 商用服务机器人指的是我们日常生活中常见的清洁机器人.送餐机器人.仓库机器人等.刻行采用 ...
- JavaScript 文件优化指南
本文将探讨实用的 JavaScript 文件优化技术.如何处理与 JavaScript 文件相关的性能问题以及帮助优化过程的工具.你将获得提升web应用程序速度的相关知识,从而为你的用户提供无缝体验. ...
- Pulsar3.0 升级指北
Pulsar3.0 介绍 Pulsar3.0 是 Pulsar 社区推出的第一个 LTS 长期支持版本. 如图所示,LTS 版本会最长支持到 36 个月,而 Feature 版本最多只有六个月:类似于 ...
- S32Kxxx bootloader之CAN FD UDS bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 六年前, 汽车内ECU ...