【学习笔记】基础算法:二次离线莫队/回滚莫队

【学习笔记】基础算法:二次离线莫队/回滚莫队 二次离线莫队 前置知识:莫队 前置知识:值域分块 值域分块,就是对 \(A\) 的值域进行分块,每个块维护该值域内数的个数 众所周知,莫队的复杂度是 \(O(n \sqrt m)\) 的,而在维护一些问题时左右端点移动一格并不是 \(\mathcal O

[转帖]深入理解Redis的scan命令

熟悉Redis的人都知道,它是单线程的。因此在使用一些时间复杂度为O(N)的命令时要非常谨慎。可能一不小心就会阻塞进程,导致Redis出现卡顿。 有时,我们需要针对符合条件的一部分命令进行操作,比如删除以test_开头的key。那么怎么获取到这些key呢?在Redis2.8版本之前,我们可以使用ke

[转帖]深入理解mysql-第六章 mysql存储引擎InnoDB的索引-B+树索引

一、引入索引 在没有索引的情况下,不论是根据主键列或者其他列的值进行查找,由于我们并不能快速的定位到记录所在的页,所以只能从第一个页沿着双向链表一直往下找,因为要遍历所有的数据页,时间复杂度就是O(n),所以这种方式显然是超级耗时的。所以我们需要采取一定的数据结构来存储数据,方便我们进行数据的增删改

算法学习笔记(3.1): ST算法

ST表 在RMQ(区间最值)问题中,著名的ST算法就是倍增的产物。ST算法可以在 \(O(n \log n)\) 的时间复杂度能预处理后,以 \(O(1)\) 的复杂度在线回答区间 [l, r] 内的最值。 当然,ST表不支持动态修改,如果需要动态修改,线段树是一种良好的解决方案,是 \(O(n)\

算法学习笔记(13): Manacher算法

# Manacher算法 > 形象的被译为**马拉车算法** 这个算法用于处理简单的回文字符串的问题。可以在 $O(n)$ 的复杂度内处理出每一个位置为中心的回文串的最长长度。 为了避免出现偶数长度的回文串,导致过多的分类讨论,我们预处理一下字符串。 例如:`jeefy` 我们可以预处理成 `^#j

算法学习笔记(27): 后缀排序

后缀排序 本文不作为教学向文章。 开篇膜拜 Pecco:算法学习笔记(84): 后缀数组 - 知乎 (zhihu.com) 有些时候,其实 \(O(n \log^2 n)\) 的排序也挺好。又短又简单。 其中 \(rk[i]\) 表示从第 \(i\) 个字符开始的后缀的排名,\(sa[i]\) 表示

算法学习笔记(28): 筛法

筛法 本文不作为教学向文章。 线性筛 线性筛是个好东西。一般来说,可以在 \(O(n)\) 内处理几乎所有的积性函数。 还可以 \(O(n)\) 找出所有的质数……(废话 杜教筛 放在偏序关系 \((\Z, |)\) 中卷积…… 如何快速的求 \(S(n) = \sum_{i = 1}^n f(i)

算法学习笔记(∞):杂项

杂项 目录杂项代码规范算法优化的本质记忆化搜索基于边的记忆化动态规划树上每一个点求答案计数题关于仙人掌 DAG 的拓扑序计数关于微扰贪心的证明组合数前缀和单位根反演\(O(n^2)\) 状态求和矩形式子求和\(O(n^2)\) 状态 \(O(n)\) 单点问题CDQ 分治FFT 循环卷积根号多项式算

YNOI 做题记

YNOI 做题记 偶然有一天做到了其中的一道题,于是便开始做相关的题了…… [Ynoi2015] 我回来了 - 洛谷 这之一场联考搬过来的题……于是考场上写了一个 \(O((n + m)\log^2 n)\) 的代码,然后成功被卡掉,非常慢速。 其实离线,将每一个伤害答案变化的时间做出来,然后加入时

详解二分查找

二分法详解 大家好,我是Weekoder! 这是我的第一篇文章,如果有做的不好的地方,请见谅,我会尽力改正。 本文中的图片截取于网络视频,非恶意搬运。 二分法,是一个高效的算法,查找一个数的时间复杂度只需要\(O(\log n)\),大大优化了朴素算法(从头到尾地遍历)\(O(n)\)的线性复杂度。

[CSP-S2019] 树的重心 题解

[CSP-S2019] 树的重心 因为这道题令我十分兴奋,所以来写一下做完后的思考。 这道题用到了树的重心的种种性质,在写解法的时候会一一点出其用处。 首先,枚举每一条边,然后各自 \(O(n)\) 扫一次的 \(O(n^2)\) 做法是简单的。 那么接下来,就会出现不同的解法了: 优化 \(O(n

刷爆 LeetCode 周赛 339,贪心 / 排序 / 拓扑排序 / 平衡二叉树

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 上周末是 LeetCode 第 339 场周赛,你参加了吗?这场周赛覆盖的知识点比较少,前三题很简单,第四题上难度。 周赛大纲 2609. 最长平衡子字符串(Easy) 模拟:$O(n)$

[转帖]Redis学习三(进阶功能).

https://www.cnblogs.com/jmcui/p/11707970.html 阅读目录 一、排序 二、事务 三、流水线(pipeline) 四、发布订阅 回到顶部 一、排序 redis 支持对 list,set 和 zset 元素的排序,排序的时间复杂度是 O(N+M*log(M))。

单链表的排序问题

单链表的排序问题 作者:Grey 原文地址: 博客园:单链表的排序问题 CSDN:单链表的排序问题 题目链接 LeetCode 148. Sort List 思路一:转换数组结合快速排序 将链表转换成数组,使用快速排序算法,然后把数组排序后的结果还原成链表。 时间复杂度 O(n*logn),空间复杂

2.1 C++ STL 数组向量容器

Vector容器是C++ STL中的一个动态数组容器,可以在运行时动态地增加或减少其大小,存储相同数据类型的元素,提供了快速的随机访问和在末尾插入或删除元素的功能。该容器可以方便、灵活地代替数组,容器可以实现动态对数组扩容删除等各种复杂操作,其时间复杂度`O(l)常数阶`,其他元素的插入和删除为`O(n)线性阶`,其中n为容器的元素个数,vector具有自动的内存管理机制,对于元素的插入和删除可动