【ybtoj高效进阶6-6-2】 期望分数/WJMZBMR打osu! / Easy 【luogu P1365】
期望分数【ybtoj高效进阶6-6-2】
WJMZBMR打osu! / Easy 【luogu P1365】
题目描述:
给定一个长度为n的由 o,x,? 组成的字符串。计算分数的规则如下:连续 a 个 o 可以得到 a 2 a^2 a2分。对于 ? 的地方,有50%的概率为 o ,另外50%的概率为x,求该字符串的期望分数。
思路:
首先,设 t o p top top 为此时连续 o o o 串的最大长度。
如果当前位置 i i i ,第 i − 1 i-1 i−1 位时连续 o o o 串的长度是 t o p top top , s [ i ] = o s[i]=o s[i]=o,那么相应的,我们有 a n s + = ( 2 ∗ t o p + 1 ) ans+=(2*top+1) ans+=(2∗top+1) t o p + + top++ top++
为什么 2 ∗ t o p + 1 2*top+1 2∗top+1呢?
因为对于每一个是o的s[i]它对答案的贡献是 ( t o p + 1 ) 2 − t o p 2 = 2 ∗ t o p + 1 (top+1)^2-top^2=2*top+1 (top+1)2−top2=2∗top+1
那么当 s [ i ] = x s[i]=x s[i]=x使,top清零,连续o串长度变成0(显而易见)
当 s [ i ] = ? s[i]=? s[i]=?时 那就全部乘上0.5
a n s + = ( 2 ∗ t o p + 1 ) / 2.0 ans+=(2*top+1)/2.0 ans+=(2∗top+1)/2.0 t o p = ( t o p + 1 ) / 2.0 top=(top+1)/2.0 top=(top+1)/2.0
然后放上代码:
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#define r register
#define rep(i,x,y) for(r ll i=x;i<=y;++i)
#define per(i,x,y) for(r ll i=x;i>=y;--i)
using namespace std;
typedef long long ll;
const ll V=1e7+10;
ll n;
double ans,top;
string s;
int main()
{scanf("%lld",&n);cin>>s;rep(i,0,n-1){if(s[i]=='o'){++top;ans+=(double)(top*top-(top-1)*(top-1));}else if(s[i]=='x') top=0;else{ans+=(double)(top*2+1.0)/2.0; top=(top+1.0)/2.0;}}printf("%.4lf",ans); return 0;
}
【ybtoj高效进阶6-6-2】 期望分数/WJMZBMR打osu! / Easy 【luogu P1365】相关推荐
- 【ybtoj 高效进阶 3.1】 【并查集】 逐个击破
[ybtoj 高效进阶 3.1] [并查集] 逐个击破 题目 解题思路 换一个思路 求出保留的边 用总边权减去保留的 能被保留下来的边的两个端点不能都被k军团占领 我们要做的就是维护每个连通块 有被占 ...
- 【ybtoj 高效进阶 1.5】【广搜】 荆轲刺秦王
[ybtoj 高效进阶 1.5][广搜] 荆轲刺秦王 解题思路 预处理 士兵的监测范围可以用查分做 例,士兵监测范围是3,如图 在每一行能被看到的起点+1,看不到的第一个-1 最后用前缀和求出所有范围 ...
- 【ybtoj 高效进阶 5.1】【动态规划】求好感度
[ybtoj 高效进阶 5.1][动态规划]求好感度 题目 解题思路 直接用多重背包的话会TLE 所以呢,将件数ai二进制分组 用0/1背包 代码 #include<iostream> # ...
- P1365 WJMZBMR打osu! / Easy(维护两种期望的简单dp)
P1365 WJMZBMR打osu! / Easy 又被我轻轻松松切掉了呢 定义dp[i]dp[i]dp[i]为[i,n][i,n][i,n]获得分数的期望 那么显然dp[n+1]=0dp[n+1]= ...
- 概率与期望——P1365 WJMZBMR打osu! / Easy
概率与期望--P1365 WJMZBMR打osu! / Easy 题目 算法与分析 Code 反思与总结 题目 P1365 WJMZBMR打osu! / Easy 算法与分析 通过读题我们知道,有oo ...
- WJMZBMR打osu! / Easy【期望dp】
>Link luogu P1365 >Description 有一个长度为 n 的仅由ooo,xxx,???三个字符组成的字符串 设字符串的分数为:其中长度为 aaa 的只包含 ooo 的 ...
- 《ybtoj高效进阶》第五部分第六章例题3 耗费体力
题目大意 跳跳虎喜欢在树林间跳跃,它从一棵较高的树跳到一棵较矮的树不需要消耗体力,否则消耗一点体力. 给出一排树,在一轮游戏的开始,跳跳虎在第111棵树,它要跳到第nnn棵树.每轮游戏有一个步伐限制 ...
- luogu P1365 WJMZBMR打osu! / Easy(期望DP)
题目背景 原 维护队列 参见P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有nnn次点击要做,成功了就是o,失败了就是 ...
- P1365 WJMZBMR打osu / Easy(期望)
传送门 期望题总是很有趣,甚至很有速签蓝题的快乐感 假设在当前含有 ??? 的连续段中,??? 前的连续 ooo 个数为 combocombocombo,而该连续段前得到的分数为 sumsumsum, ...
最新文章
- 前缀和?or差分序列?
- 一部IT电影,《反托拉斯行动》,主角加里-文斯顿(蒂姆·罗宾斯饰)影射比尔·盖茨...
- ant vue 树形菜单横向显示_Vue--组件Ant- 树形结构菜单
- application.xml定时
- 评分卡模型剖析之一(woe、IV、ROC、信息熵)
- Asp.net中服务端控件事件是如何触发的(笔记)
- Linux Free命令与cache和buffer的主要区别
- Linux 命令简单介绍第二课笔记
- linux 编译安装apache
- 智能用户增长神器QuickAudience开启公共云公测,助力企业业务增长
- Java中的一些坑,汇总篇(2万字)
- 为什么计算机关机慢,电脑关机慢是什么原因 电脑关机慢的原因【图文】
- 飞鸽传书完全不知道这是什么
- docker下载地址及 设置自己的阿里云镜像加速器,Kubernetes(K8S) 安装
- (转)AI搅局金融业!传奇投资人“都铎·琼斯”真金白银来押注
- Java 开发之微信(支付宝)扫码支付的小总结
- 已处理证书链但是在不受信任提供程序信任的_什么是区块链(Blockchain)?这是我见过的最通俗易懂的解释...
- win10、Ubuntu双系统删除Ubuntu的方法
- 如何查看计算机硬盘规格大小,台式机硬盘如何查看大小
- hpux oracle19c dbca DBT-05509 Failed To Connect To The Specified Database
热门文章
- Ansible之管理华为交换机配置
- 除铊项目案例分享,出水做到0.01mg/L
- Google C++ Style Guide - Google C++ 风格指南
- Cesium|xt3d扇形扫描
- 使用LINQ读取分隔符文本文件
- 计算机分隔线教程,装电脑必知 机箱理线基础图文教程
- micropython 自动化_Micropython Turnipbit自动窗帘模拟系统
- 《青山翠影》柒 老公的情人 | 偷情有情
- 网络电视盒子哪个好?测评工作室总结目前性能最好的电视盒子
- 码蹄集 - MT3143 - 试管装液