「学习笔记」数论分块
引入#
给定 ,求
我们可以想到枚举,但是 ,你 飞了
怎么办呢?
我们先举几个小的例子,例如
相信看到这,你就发现了,这一整个数列被分成了若干段,每段的长度以及所代表的答案都不同,但是我们可以直接算出来, 是这个答案所代表的值, 是这个答案的块的右端点,
下面是一些结论与推导
结论: 最多有 种不同的值
证明:
、当 , 有 种,所以 最多有 种不同的值
、当 ,, 也最多有 种不同的值
所以加起来, 最多有 种不同的值
最多有 种不同的值,我们只需要找到每种值有多少个即可,就能在 的时间复杂度内算出 的值
每种值的个数有多少个呢?
假设 ,找出了多少个 ,使得
设 ,, 是满足 的最小值, 是满足 的最大值
令 ,所以
所以
所以
所以
有多少个数呢?
个
作者:yifan0305
出处:https://www.cnblogs.com/yifan0305/p/17045021.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载时还请标明出处哟!
朝气蓬勃 后生可畏
分类:
数学知识
Buy me a cup of coffee ☕.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】