5 条题解
-
1
这里放一个科技
首先众所不周知,有一种二叉搜索树是 Stern Bocot Tree
然后相关内容可以移步这里 https://oi-wiki.org/math/number-theory/stern-brocot/
我觉得维基百科说的挺好的。
然后如果您觉得我写得太弱了,根本不本质,也可以移步这里 看里面第一篇题解
首先有一个非常 navie 的做法叫做,我考虑枚举根号以内的数,然后计算 然后因为中间有 重复计算过了,把它们减去就好了
那么好,步入正题
我们考虑这个东西的几何意义
放张图

我们发现我们要求的无非就是紫色区域内的整点个数(不算坐标轴)
于是我们考虑
积分拟合这个函数,(积分精度绝对爆炸)所以我们要二分往后走的向量。
其实所谓的二分本质上就是对 向量和 向量求和。
然后发现 向量的斜率恰好在它们之间。
于是我们就可以二分了。
我们的是判断走完这一步向量会不会走到紫色区域里面。
如果走不进去,把 赋值成
如果走的进去,我们要分类讨论一下:
如果我们走完这一步向量所在位置的函数导数不大于向量斜率,就说明我们无论怎么二分,都一定会走到函数里面。

如图,我们发现当前的 向量无论加多少 向量,都不可能走出去了。
反之,就继续进行二分。
然后如果我们直接每一次走的时候都这样二分非常傻,注意到我们的向量是单调递增的,我们每一次把走不进去的向量丢到单调栈里面,下一次我们找相邻的两个向量,且 恰好走得进去, 恰好走不进去,接着进行二分。
对于那些斜率比还大,那我们就可以丢掉了,因为我们以后一定不会用到这些向量。
然后直接这么做,根据论文复杂度是错的,所以我们对于 之内的直接暴力,否则按照上述方式走。
信息
- ID
- 191
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 69
- 已通过
- 21
- 上传者