根号算法

看的视频课,晕晕乎乎的看了不知道多久,快进&回放反复横跳。

有一些非常奇妙的收获,记录一下。

好乱啊。。。

 

分块:可以理解为深度为3,儿子数为O(n)的分治树。

普通莫队的比较优秀的块长是n2m3

普通莫队可以奇偶性优化,即左端点块编号为奇数时右端点升序,偶数时降序。

回滚莫队解决不修改莫队问题。

带修莫对就是在普通的双参莫队上再加一维(前提是可撤销),时间复杂度是O(n53)

树上莫队可以采用一种特殊的遍历序:进入时加入,回溯时加入,介于dfs序和Euler序之间的一种。

然后出现次数为奇数的有贡献,出现次数为偶数的没有贡献,再额外考虑一下lca的贡献即可。

然后就排在序列上可以乱弄了。

二次离线:我们对问题离线之后,问题产生的子问题不能合理解决,于是可以把子问题的询问再次离线。

类似分块套莫队之类的。

cache:内存大时运行较慢。这对根号算法的影响很大。

块状链表:支持O(1)查询第k大,O(\sqrt{n})插入或删除。将数列分为若干段然后维护多个队列,保证队列长度一定。

根号平衡:当两种操作数量级不同时,可以给次数较少的操作分配O(n)的复杂度以此为代价让操作次数多的达到O(1)

树上分块:(应对强制在线)。随机出根号个点,每个点离其它点的距离的期望是O(n)的。常数巨大。

复杂度优化:二分答案+分块时复杂度瓶颈在于两端的零散块(中间的两个log会被开根成一个)。考虑把零散块从二分中提出即可将整体复杂度降低。

区间逆序对数:差分+二次离线。经典题还要好好深究。

根号分治:也就是俗话讲的分大小点,小点暴力统计所有贡献以及处理好与大点的关系(类似懒标记)。大点只查找与其他大点的关系然后直接释放小点的标记。

可以分解质因数考虑的:可以利用大于n13的质因子最多只有2个的性质,对于小质因子直接处理。

定期重构:对于复杂度没有保证的数据结构可以每n次操作后就暴力整个重构一次来保证复杂度,总时间不大。

运用:动态点分治。不平衡时重构。

posted @   DeepinC  阅读(942)  评论(2编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示