5 条题解

  • 1
    @ 2025-9-17 16:55:16

    这里放一个科技

    首先众所不周知,有一种二叉搜索树是 Stern Bocot Tree

    然后相关内容可以移步这里 https://oi-wiki.org/math/number-theory/stern-brocot/

    我觉得维基百科说的挺好的。

    然后如果您觉得我写得太弱了,根本不本质,也可以移步这里 看里面第一篇题解

    首先有一个非常 navie 的做法叫做,我考虑枚举根号以内的数,然后计算 2n/i 2\sum n/i 然后因为中间有 BBB*B 重复计算过了,把它们减去就好了

    那么好,步入正题

    我们考虑这个东西的几何意义

    放张图

    我们发现我们要求的无非就是紫色区域内的整点个数(不算坐标轴)

    于是我们考虑积分拟合这个函数,(积分精度绝对爆炸)

    所以我们要二分往后走的向量。

    其实所谓的二分本质上就是对LL 向量和 RR 向量求和。

    然后发现 L+RL+R 向量的斜率恰好在它们之间。

    于是我们就可以二分了。

    我们的chkchk是判断走完这一步向量会不会走到紫色区域里面。

    如果走不进去,把 RR 赋值成midmid

    如果走的进去,我们要分类讨论一下:

    如果我们走完这一步向量所在位置的函数导数不大于向量斜率,就说明我们无论怎么二分,都一定会走到函数里面。

    如图,我们发现当前的LL 向量无论加多少 RR 向量,都不可能走出去了。

    反之,就继续进行二分。

    然后如果我们直接每一次走的时候都这样二分非常傻,注意到我们的向量是单调递增的,我们每一次把走不进去的向量丢到单调栈里面,下一次我们找相邻的两个向量,且LL 恰好走得进去,RR 恰好走不进去,接着进行二分。

    对于那些斜率比LL还大,那我们就可以丢掉了,因为我们以后一定不会用到这些向量。

    然后直接这么做,根据论文复杂度是错的,所以我们对于 n13n^{\frac{1}{3}} 之内的直接暴力,否则按照上述方式走。

    信息

    ID
    191
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    69
    已通过
    21
    上传者