思路

第一步,先推导1,0,0,……,0,就是1后面跟了n-1个0的时候

所需要的期望步数

封闭式推导

\(f_n\)代表从n关开始直接通关需要的步数的期望

n为1的情况,即就只有一个1

\(f_1=\cfrac{1}{2} \times 1+\cfrac{1}{2} \times (f_1+1)\)

整理得\(f_1=2\)

第一关时,你有一半的概率通关,有一半的概率回到自身重新开始

n为2的情况,1,0

\(f_1=\cfrac{1}{2} \times 1+\cfrac{1}{2} \times (f_2+1)\)

\(f_2=\cfrac{1}{2} \times 1+\cfrac{1}{2} \times (f_1+1)\)

整理得\(f_1=6\)

第一关时,你有一半的概率到达第二关,有一半的概率回到自身重新开始

第二关时,你有一半的概率通关,有一半的概率回到第一关重新开始

这样我们就可以进行归纳总结

把每个式子化简一下

\(f_1=\cfrac{1}{2} f_1+\cfrac{1}{2} f_2+1\)

\(f_2=\cfrac{1}{2} f_1+\cfrac{1}{2} f_3+1\)

\(f_3=\cfrac{1}{2} f_1+\cfrac{1}{2} f_4+1\)

……

\(f_i=\cfrac{1}{2} f_1+\cfrac{1}{2} f_{i+1}+1\)

……

\(f_n=\cfrac{1}{2} f_1+1\)

然后自己整理一下,就是两个等比数列的和

就得到了\(f_1\)的封闭式

对于任意情况的n时,\(f_1=2^{n+1}-2\)

思路推进

推导出1,……,0,0的期望公式之后,我们如果再后面继续添加1,0,……,0这样一个序列

那么他的期望是直接相加的,因为他是一个复活点(检查点),跟你前面的序列一点关系都没有

所以你无论怎么增加都是一个2的倍数,这样也就得到奇数的时候是无解的

代码实现

Codeforces Round #688(Div 2) D. Checkpoints的更多相关文章

  1. Codeforces Round #688 (Div. 2)

    A. Cancel the Trains 题意:给定两个数组,找出这两个数组中有多少重复元素,然后输出 思路:直接找 代码: 1 #include<iostream> 2 #include ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. Js中常见的内存泄漏场景

    常见的内存泄漏场景 内存泄漏Memory Leak是指程序中已动态分配的堆内存由于疏忽或错误等原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果.内存泄漏并非指内 ...

  2. 浅谈js for循环输出i为同一值的问题

    问题再现 ​ 最近开发中遇到一个问题,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5. <html> <head> <meta http- ...

  3. Linux 下 GCC 的使用

    0 运行环境 本机系统:Windows 7 虚拟机软件:Oracle VM VirtualBox 6 虚拟机系统:CentOS 7 1 GCC 简介 GCC 是 GUN Compiler Collec ...

  4. ARM的三级流水线结构

    看到汇编中很多关于程序返回与中断返回时处理地址都很特别,仔细想想原来是流水线作用的效果.所以,决定总结学习下ARM流水线. ARM7处理器采用3级流水线来增加处理器指令流的速度,能提供0.9MIPS/ ...

  5. HiveMQ TDengine extension 使用指南

    我们简单介绍一下 HiveMQ extension for TDengine 的部署和使用方法. TDengine 和 HiveMQ 部署方法 TDengine 安装最新 TDengine serve ...

  6. mysql 触发器的创建和使用

    什么是触发器 触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持.该对象与编程语言中的函数非常类似,都需要声明.执行等.但是触发器的执行不是由程序调用,也不是由手工启动,而 ...

  7. binary hacks读数笔记(共享库)

    共享库从文件结构上来讲,与共享对象没什么区别.Linux下,共享库就是普通的ELF共享对象. 1.共享库命名: libname.so.x.y.z :其中最前面使用前缀lib,中间是库的名字和后缀&qu ...

  8. 论文学习笔记 - 高光谱 和 LiDAR 融合分类合集

    A³CLNN: Spatial, Spectral and Multiscale Attention ConvLSTM Neural Network for Multisource Remote Se ...

  9. innodb之线程及IO相关参数介绍

    引用链接:http://www.cnblogs.com/henglxm/p/4284504.html   1.IO THREAD: 负责IO的相关线程IO THREAD 1. 参数innodb_wri ...

  10. Linux下PSSH的安装

    python实现的集群批量命令工具,非常方便集群管理.同时其还带有pscp等功能 在合适的目录下,这里本机为/soft 输入命令 wget https://pypi.python.org/packag ...