VP 的时候发现的一道数学题(

在思考这个问题之前,先让我们思考一件事:走到距离上一个存档点 \(n\) 的位置的期望是多少?(假设这个值为 \(f[n]\))

先思考 \(f[1]\) 是多少,很明显是:

\[S=\sum_{i=0}^{\infty}i \times 2^{-i}
\]

手拆一下:

\[2^{-1}S=\sum_{i=1}^{\infty}(i-1) \times 2^{-i}
\]

相减:

\[2^{-1}S=\sum_{i=1}^{\infty}2^{-i}
\]

很容易得到 \(2^{-1}S=1\),也就是 \(f[1]=2\) 当然你也可以通过观察样例来得到这个结论

来思考 \(f[n]\),考虑从 \(f[n-1]\) 递推过来。枚举失败的次数:

\[f[n]=\sum_{k=0}^{\infty}((k+1) \times f[n-1]+(k+1)) \times 2^{-k-1}
\]
\[f[n]=(f[n-1]+1)\sum_{k=1}^{\infty}k \times 2^{-k}
\]

于是有 \(f[n]=(f[n-1]+1) \times 2\)。手玩一下即可发现 \(f[n]=2^{n+2}-2\)。

因为期望具有线性性,(\(E(a+b)=E(a)+E(b)\))于是问题就变成了了如何用若干个 \(f\) 凑出 \(k\)。

变形一下,\(f[n]=2(2^{n+1}-1)\),说明 \(n\) 为奇数时一定不行。

于是我们枚举最大的 \(f\),枚举到一个就让 \(k\) 减去 \(f\),然后当做当前的 \(k\) 接着做。

#include<cstdio>
typedef long long ll;
ll k,f[61];int len,ans[2005];
signed main(){
int T,i,j;ll k;f[0]=2;scanf("%d",&T);
for(int i(1);i<=60;++i)f[i]=f[i-1]+1<<1;
while(T--){
scanf("%lld",&k);len=0;
if(k&1){
printf("-1\n");continue;
}
for(i=60;i>=0;--i){
while(k>=f[i]){
ans[++len]=1;
for(j=1;j<=i;++j)ans[++len]=0;k-=f[i];
}
}
printf("%d\n",len);
for(i=1;i<=len;++i)printf("%d ",ans[i]);printf("\n");
}
}

CF1453D题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. swift语言学习博文精选

    初探swift语言的学习笔记九(OC与Swift混编) Objective-C 与 Swift 混编之路 Swift项目兼容Objective-c问题汇总

  2. Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/zeppelin/server/ZeppelinServer : Unsupported major.minor version 52.0

    在启动Zeppelin时遇到了该问题: [root@quickstart bin]# ./zeppelin-daemon.sh restart Please specify HADOOP_CONF_D ...

  3. Git修改提交历史中的作者及邮箱信息

    一.使用rebase 如图,红圈中提交的用户名及邮箱是需要改的,则需要复制需要改的提交记录的上一个记录hashcode,在本例中就是a0a891a48f92b51201042fccbe61ed1264 ...

  4. 在MacOS安装puppeteer

    安装node:升级:npm i npm 安装yarn:需要注意先把yarn的流程跑完,特别是package.json 安装puppeteer:yarn add puppeteer 安装完成以后需要重启 ...

  5. ConcurrentHashMap (jdk1.7)源码学习

    一.介绍 1.Segment(分段锁) 1.1 Segment 容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而可以有效的提高并 ...

  6. Linux海王 之 pdsh (并行管理工具)

    文章目录 安装 使用 示例 -w 指定主机 -l 指定用户 -g指定用户组 主机列表 交互式界面 pdsh是一个多线程远程shell客户机,它在多个远程主机上并行执行命令 pdsh可以使用几种不同的远 ...

  7. C# 给Word每一页设置不同图片水印

    Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以C#代码为例,对W ...

  8. CUDA01 - 硬件架构、warp调度、指令流水线和cuda并发流

    这一部分打算从头记录一下CUDA的编程方法和一些物理架构上的特点:从硬件入手,写一下包括线程束的划分.流水线的调度等等微结构的问题,以及这些物理设备是如何与软件对应的.下一部分会写一下cuda中的几种 ...

  9. Java高性能本地缓存框架Caffeine

    一.序言 Caffeine是一个进程内部缓存框架,使用了Java 8最新的[StampedLock]乐观锁技术,极大提高缓存并发吞吐量,一个高性能的 Java 缓存库,被称为最快缓存. 二.缓存简介 ...

  10. netty系列之:channelHandlerContext详解

    目录 简介 ChannelHandlerContext和它的应用 AbstractChannelHandlerContext DefaultChannelHandlerContext 总结 简介 我们 ...