ACM
文章平均质量分 95
IdlePerson.
宁波大学牛马一枚
展开
-
基础分块、基础莫队详解
分块的基本思想是,通过对原数据的适当划分,并在划分后的每一个块上预处理部分信息,从而较一般的暴力算法取得更优的时间复杂度。我们很容易可以发现,在块间移动时,也有可能会有很大的震动,所以在排序时可以使用奇偶性排序,让奇数块和偶数块采用相反的对右端点的排序。我们将所以的查询都抽象成点,放到坐标轴里观察,上面的问题其实转化为我们从原点开始,我们要不重不漏的走完这些点,走到一个点就记录一个点的答案。线段树一次操作的复杂度是树的高度,而分块一次操作的复杂度取决于块的大小,我们可以写出一次操作进行的运算次数为。原创 2023-10-29 10:07:19 · 239 阅读 · 3 评论 -
全网最细【树状数组】
树状数组是利用数的二进制特征进行检索的一种树状的结构。它用于维护前缀和的数据结构,支持单点修改、区间查询;区间修改、区间查询等一系列操作。树状数组维护的元素要满足结合律和可差分的性质。原创 2023-09-01 17:58:19 · 81 阅读 · 1 评论 -
Manacher(马拉车)算法详解
算法的主要思路是维护一个最右回文子串,利用该区间的对称性,计算当前遍历位置为中心的回文半径,回文半径就是从中心(如果为奇回文串,就包含中心位置)到回文串一端的距离。我们可以再每个字符之间加入特殊字符,奇回文串的中心不变,偶回文串的中心就变成了特殊字符。还有另一种枚举的方法,是中心扩散法,利用了回文串的对称性,枚举每一个字符,然后从中心向两边比较,时间复杂度也为。求最长回文子串的方法,最容易想到的就是暴力枚举,将所有的回文子串都找出来,然后找做大的,时间复杂度就相当高了。,回文串可以分为奇回文串和偶回文串,原创 2023-07-24 14:30:40 · 1471 阅读 · 3 评论 -
最小表示法详解
最坏情况,字符串S有大量相同元素,但不是全相同,使得。时间复杂度分析,一般情况,序列随机时间复杂度为。这里有几道运用最小表示法的习题,来练习一下吧!位置为下一个循环同构串的开头,那一定存在以。所有循环同构的字符串中字典序最小的字符串。内,就不会有最终的答案,我们就可以直接将。为开头的循环同构串是比前者更优的,因为。都不是最终的答案,所以就可以直接跳到。我没可以画一个图来理解,如下图。内,就不会有最终的答案呢?每次遍历,都能到最大值,两个区间是完全相同的,且。这里的优化类似字符串。原创 2023-07-18 22:35:53 · 185 阅读 · 1 评论