期望分数【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】相关推荐

  1. 【ybtoj 高效进阶 3.1】 【并查集】 逐个击破

    [ybtoj 高效进阶 3.1] [并查集] 逐个击破 题目 解题思路 换一个思路 求出保留的边 用总边权减去保留的 能被保留下来的边的两个端点不能都被k军团占领 我们要做的就是维护每个连通块 有被占 ...

  2. 【ybtoj 高效进阶 1.5】【广搜】 荆轲刺秦王

    [ybtoj 高效进阶 1.5][广搜] 荆轲刺秦王 解题思路 预处理 士兵的监测范围可以用查分做 例,士兵监测范围是3,如图 在每一行能被看到的起点+1,看不到的第一个-1 最后用前缀和求出所有范围 ...

  3. 【ybtoj 高效进阶 5.1】【动态规划】求好感度

    [ybtoj 高效进阶 5.1][动态规划]求好感度 题目 解题思路 直接用多重背包的话会TLE 所以呢,将件数ai二进制分组 用0/1背包 代码 #include<iostream> # ...

  4. 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]= ...

  5. 概率与期望——P1365 WJMZBMR打osu! / Easy

    概率与期望--P1365 WJMZBMR打osu! / Easy 题目 算法与分析 Code 反思与总结 题目 P1365 WJMZBMR打osu! / Easy 算法与分析 通过读题我们知道,有oo ...

  6. WJMZBMR打osu! / Easy【期望dp】

    >Link luogu P1365 >Description 有一个长度为 n 的仅由ooo,xxx,???三个字符组成的字符串 设字符串的分数为:其中长度为 aaa 的只包含 ooo 的 ...

  7. 《ybtoj高效进阶》第五部分第六章例题3 耗费体力

    题目大意 跳跳虎喜欢在树林间跳跃,它从一棵较高的树跳到一棵较矮的树不需要消耗体力,否则消耗一点体力. 给出一排树,在一轮游戏的开始,跳跳虎在第111棵树,它要跳到第nnn棵树.每轮游戏有一个步伐限制 ...

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

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

  9. P1365 WJMZBMR打osu / Easy(期望)

    传送门 期望题总是很有趣,甚至很有速签蓝题的快乐感 假设在当前含有 ??? 的连续段中,??? 前的连续 ooo 个数为 combocombocombo,而该连续段前得到的分数为 sumsumsum, ...

最新文章

  1. 前缀和?or差分序列?
  2. 一部IT电影,《反托拉斯行动》,主角加里-文斯顿(蒂姆·罗宾斯饰)影射比尔·盖茨...
  3. ant vue 树形菜单横向显示_Vue--组件Ant- 树形结构菜单
  4. application.xml定时
  5. 评分卡模型剖析之一(woe、IV、ROC、信息熵)
  6. Asp.net中服务端控件事件是如何触发的(笔记)
  7. Linux Free命令与cache和buffer的主要区别
  8. Linux 命令简单介绍第二课笔记
  9. linux 编译安装apache
  10. 智能用户增长神器QuickAudience开启公共云公测,助力企业业务增长
  11. Java中的一些坑,汇总篇(2万字)
  12. 为什么计算机关机慢,电脑关机慢是什么原因 电脑关机慢的原因【图文】
  13. 飞鸽传书完全不知道这是什么
  14. docker下载地址及 设置自己的阿里云镜像加速器,Kubernetes(K8S) 安装
  15. (转)AI搅局金融业!传奇投资人“都铎·琼斯”真金白银来押注
  16. Java 开发之微信(支付宝)扫码支付的小总结
  17. 已处理证书链但是在不受信任提供程序信任的_什么是区块链(Blockchain)?这是我见过的最通俗易懂的解释...
  18. win10、Ubuntu双系统删除Ubuntu的方法
  19. 如何查看计算机硬盘规格大小,台式机硬盘如何查看大小
  20. hpux oracle19c dbca DBT-05509 Failed To Connect To The Specified Database

热门文章

  1. Ansible之管理华为交换机配置
  2. 除铊项目案例分享,出水做到0.01mg/L
  3. Google C++ Style Guide - Google C++ 风格指南
  4. Cesium|xt3d扇形扫描
  5. 使用LINQ读取分隔符文本文件
  6. 计算机分隔线教程,装电脑必知 机箱理线基础图文教程
  7. micropython 自动化_Micropython Turnipbit自动窗帘模拟系统
  8. 《青山翠影》柒 老公的情人 | 偷情有情
  9. 网络电视盒子哪个好?测评工作室总结目前性能最好的电视盒子
  10. 码蹄集 - MT3143 - 试管装液