CF1453D题解
VP 的时候发现的一道数学题(
在思考这个问题之前,先让我们思考一件事:走到距离上一个存档点 的位置的期望是多少?(假设这个值为 )
先思考 是多少,很明显是:
手拆一下:
相减:
很容易得到 ,也就是 当然你也可以通过观察样例来得到这个结论
来思考 ,考虑从 递推过来。枚举失败的次数:
于是有 。手玩一下即可发现 。
因为期望具有线性性,()于是问题就变成了了如何用若干个 凑出 。
变形一下,,说明 为奇数时一定不行。
于是我们枚举最大的 ,枚举到一个就让 减去 ,然后当做当前的 接着做。
#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");
}
}
本文作者:Prean
本文链接:https://www.cnblogs.com/lmpp/p/15788262.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通