题目描述

不忘初心。

  小$\pi$假期在家无聊,打开了某弹幕直播网站。
  突然,有一个精彩的镜头。
  小$\pi$看到了满屏的$6$,其中,有$666$、也有$666666$、也有$6666666666...$
  小$\pi$也想发个弹幕,他打算发$n$个$6$。
  然而当他按下第一个$6$时,键盘上$6$的键坏了。
  这时,弹幕框里只有$1$个$6$。
  键盘坏了什么的不要紧,先把弹幕发了才是正事。
  于是小$\pi$打算用复制粘贴这类操作来生成这$n$个$6$。
  具体的说,小$\pi$电脑的操作系统有唯一的一块剪贴板,初始为空,现在小
  $\pi$一共有三种操作:
  第$1$种操作,全选然后复制。这样会把剪贴板里的内容设置为当前弹幕框内内容。
  第$2$种操作,粘贴。会把剪贴板中的内容连接到弹幕框现有的内容后面。
  第$3$种操作,$backspace$。会把在当前弹幕框中删除一个$6$。
  小$\pi$很好奇现在生成想要的$n$个$6$至少需要多少次操作,来找到了学信息学竞赛的你。
  注意本题时间限制


输入格式

  一行一个整数$n$。


输出格式

  一行一个整数$ans$,表示最少操作次数。


样例

样例输入1:

0

样例输出1:

1

样例输入2:

3

样例输出2:

3


数据范围与提示

  其中$6\%$的数据,$n=2^k$,$k$为正整数。
  其中$24\%$的数据,$n\leqslant 1,000$。
  其中$20\%$的数据,内存扩充至$768MB$。
  其中$20\%$的数据,时间扩充到$3s$。
  其中$30\%$的数据,无特殊限制。
  所有数据存在一种划分方法,使得上述范围两两没有交集。
  对于$100\%$的数据,$0\leqslant n\leqslant 1,000,000$。


题解

模拟全过程。

设$f[i]$表示$i$个$6$的步数,初始时将其都付成没有访问过,$f[1]=0$。

然后每次暴力扫,用现在有的更新即可。

因为最多会走$48$步,所以时间复杂度是对的。

时间复杂度:$\Theta(48\times n)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
int n,dp[1000100],bs;
int main()
{
scanf("%d",&n);
memset(dp,-1,sizeof(dp));
dp[1]=0;int now=n+50;
while(dp[n]==-1)
{
bs++;
for(register int i=1;i<=now;i++)
{
if(dp[i]==-1)continue;
register int flag=i*(bs-dp[i]);
if(flag<=now&&dp[i]<bs&&dp[flag]==-1)dp[flag]=bs;
if(dp[i-1]==-1)dp[i-1]=dp[i]+1;
}
}
printf("%d",dp[n]);
return 0;
}

rp++

[CSP-S模拟测试]:666(模拟)的更多相关文章

  1. 模拟测试—moq:简单一两句

    在Xunit的基础上,说话模拟测试. 假如我们有这样一个控制器里面有这样一个方法,如图 我们在对Bar测试得时候,如果测试未通过,错误有可能来至于Bar,也有可能错误来至于serverde Foo方法 ...

  2. csp-s模拟测试89

    csp-s模拟测试89 $T1$想了一会儿没什么思路,一看$T2$  $1e18$当场自闭打完暴力就弃了,$T3$看完题感觉要求$lca$和$dep$,手玩了一下样例发现$lca$很显然,$dep$貌 ...

  3. Android单元测试与模拟测试详解

    测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...

  4. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

  5. 安装nginx python uwsgi环境 以及模拟测试

    uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...

  6. 利用Python中的mock库对Python代码进行模拟测试

    这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下     ...

  7. 转 C#实现PID控制的模拟测试和曲线绘图

    C#实现PID控制的模拟测试和曲线绘图   本文分两部分,一部分是讲PID算法的实现,另一部分是讲如何用动态的曲线绘制出PID运算的结果. 首先,PID算法的理论模型请参考自动控制理论,最早出现的是模 ...

  8. Mockito:一个强大的用于Java开发的模拟测试框架

    https://blog.csdn.net/zhoudaxia/article/details/33056093 介绍 本文将介绍模拟测试框架Mockito的一些基础概念, 介绍该框架的优点,讲解应用 ...

  9. NOIP模拟测试1(2017081501)

    好,今天是cgg第一次举行模拟测试,希望各位支持. 时间限制:2小时 题目链接: 题目一:水得都没名字了 题目二:车站 题目三:选数 不要觉得2小时太少,我的题目很良心,都很简单. 答案可以在模拟测试 ...

随机推荐

  1. 《剑指offer》面试题6 重建二叉树 Java版

    (由一个二叉树的前序和中序序列重建一颗二叉树) 书中方法:我们要重建一棵二叉树,就要不断地找到根节点和根节点的左子结点和右子节点.注意前序序列, 它的第一个元素就是二叉树的根节点,后面的元素分为它的左 ...

  2. 开启linux服务器防火墙

    启用ufwsudo ufw enablesudo ufw default deny运行以上两条命令后,开启了防火墙,并在系统启动时自动开启.关闭所有外部对本机的访问,但本机访问外部正常. 开启和禁用s ...

  3. 在Vue项目中加载krpano全景图

    在Vue-cli项目中做krpano全景图编辑器的时候,由于js插件的路径是动态的,做的过程中遇到了加载不到资源的难题,在网上搜索了好久也没找到合适的办法,最后想到了可能是JS加载的问题,于是解决了问 ...

  4. filebeat开启自带模块收集日志如何辨别日志来源等

    filebeat启动自带模块后,日志先输出到Redis中 比如开启了system模块日志和redis模块日志 在Redis中查看收集过来的日志时,可以看到如下的这些信息 system日志信息 { &q ...

  5. uoj #450[集训队作业2018]复读机

    传送门 \(d=1\),那么任何时刻都可以\(k\)个复读机的一种,答案为\(k^n\) \(d>1\),可以枚举某个复读机的复读次数(必须是\(d\)的倍数),然后第\(i\)个复读时间为\( ...

  6. redis 模拟redis server接收信息

    一.实现说明 客户端使用jedis正常set值到redis服务器   2. 模拟服务器接收jedis发送的信息 二.jedis客户端代码 package com.ahd.redis; import r ...

  7. 通过JNI实现java调用C代码和C代码调用java的代码

    一.java调用C代码 1)java中需要声明调用的函数,也就是native方法,并通过System.LoadLibrary来调用dll或者so(C代码).实例代码如下: public class H ...

  8. keymaps - 对键盘映射文件的描述

    描述 (DESCRIPTION) loadkeys(1) 能够 通过 调入 指定的 文件 修改 键盘翻译表, 键盘翻译表 通常 用于 内核的 键盘驱动程序; 另外 dumpkeys(1) 可以 根据 ...

  9. CF Round #424 Div.2 D

    n个人拿K个钥匙中的n个然后到办公室(点p) 问最少需要的时间是多少 先排序 如果j<=i 则必须拿这个钥匙 dp[i][j]=max(dp[i-1][j-1],abs(p-b[j])+abs( ...

  10. Excel筛选操作

    Excel的筛选操作如下: 选中指定列: 点击"开始"中的"排序和筛选" 点击如下小三角即可按条件进行筛选