1 条题解

  • 0
    @ 2025-8-24 22:53:00

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Expert_Dream
    **

    搬运于2025-08-24 22:53:00,当前版本为作者最后更新于2023-12-09 22:01:16,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    更好的阅读

    这是一道找规律的题目。

    因为我个人习惯,以下部分使用从 11 开始的下标讲述。

    首先我们以 11 来说:发现在第 xxyy 列的连通块是可以直接连到第 11 列的,所以很容易可以得出 11yy 列的连通块数量是 2y12^y-1

    接着,我们考虑再后面的情况:

    显然,通过观察会分为后面两种情况。一种是遇到了不一样的数字,那么就无法继续判断下去。如果是一样的话那么必定是增加 2y12^{y-1} 个连通块,于是,我们就可以用一个循环,一直增加 yy,不断更新着连通块的数量。

    如果考虑 00 的情况也是同理。这里不过多解释。

    但是我们还是会发现:这样的时间复杂度肯定过不去。

    但是出题人给了善良的条件:n1018n \le 10^{18}。那么 log(n)\log(n) 最多也就 6464 了,所以,我们在 yy 大于 6464 的时候特判掉即可。

    于是优化到了 O(qlogn)O(q \log n)

    上代码:link

    其中感谢 @tiger2008 在 求助贴 中告知需要特判。感谢好心人!

    给个关注或一个赞呗!

    • 1

    信息

    ID
    8285
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者