题目描述 题解: 这篇题解是关于manacher+SAM的。 因为我还不会回文自动机我会学的 SAM支持给出一个串,求出现次数。 manacher支持找回文串。 然后放在一起,当每个节点回文半径扩展时查询。 这样时间是O(n^2)的。 为了时间,我们可以O(nlogn)预处理每个节点沿pre指针条2 ...
一般的线性卷积: $f[i]=\sum_{j=0}^i a[j]*b[i-j]$ 如果将$b$数组循环复制得到$b_N$就能得到周期卷积: $f[i]=\sum_{j=0}^{N-1} a[j]*b_N[i-j]$ 而一般比较常见的循环卷积其实就是周期卷积的主值序列($[0,N-1]$项): $f[ ...
分类:
其他好文 时间:
2018-12-14 17:32:50
阅读次数:
120
进阶版的序列DP 从一道题的优化开始 ModricWang的序列问题 题目描述:给定一个序列,求出这个序列中的最长上升子序列的长度。 这道题的本质还是求解一个最长上升子序列的问题 相对与之前提到过的O(n^2)的算法 我们可以重新整理思路 用O(nlogn)的思路来写,用贪心和二分优化之前的算法 我 ...
分类:
编程语言 时间:
2018-12-14 17:22:41
阅读次数:
205
很容易想到时间复杂度为O(nlogn)的做法。可以做一个小优化,就是先找出小于num的2的次幂,然后ans[i] = 1 + ans[i-max2];就是i的二进制中1的个数等于1+i-小于i的最大的2次幂的1的个数。 ...
分类:
其他好文 时间:
2018-12-13 01:20:32
阅读次数:
122
排序算法 算法分析 算法稳定性 如果一种排序算法不会改变关键码值相同的记录的相对顺序,则称为稳定的(stable) 不稳定的算法在某种条件下可以变为稳定的算法,而稳定的算法在某种条件下也可以变为不稳定的算法。例如,对于冒泡排序算法,原本是稳定的排序算法,如果将记录交换的条件改成a[j].key>=a ...
分类:
编程语言 时间:
2018-12-12 22:07:25
阅读次数:
326
(一)时间复杂度为O(N²),空间复杂度为O(1)的排序 冒泡排序 选择排序 插入排序 (二)时间复杂度为O(NlogN)的排序 归并排序,空间复杂度为O(N) 快速排序,空间复杂度为O(logN)~O(N) 堆排序,空间复杂度为O(1) 经典堆排序实现使用了递归的方式(函数栈),空间复杂度为O(l ...
分类:
编程语言 时间:
2018-12-12 15:01:34
阅读次数:
233
"传送门" 这道题是带修主席树的板子题。我们先来考虑一下主席树带修改最暴力的做法,就是暴力修改与之有关的所有权值线段树,这样的话单次操作的复杂度就是$O(nlogn)$的,总体的操作就是$O(n^2logn)$的,显然吃不消。 因为主席树其实应用的是前缀和的思想,我们考虑一下在最开始的时候,我们是怎 ...
分类:
其他好文 时间:
2018-12-10 23:33:27
阅读次数:
281
我们今天来讲一个应用比较广泛的数据结构——树状数组 它可以在O(nlogn)的复杂度下进行单点修改区间查询,下面我会分成三个模块对树状数组进行详细的解说,分别是树状数组基本操作、树状数组区间修改单点查询的实现、树状数组查询最值的实现 一. 树状数组一般分为三种操作,初始化、修改、查询 在讲基本操作之 ...
分类:
编程语言 时间:
2018-12-09 16:43:28
阅读次数:
229
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2049 [算法] LCT动态维护森林连通性 时间复杂度 : O(NlogN ^ 2) [代码] ...
分类:
其他好文 时间:
2018-12-08 21:13:38
阅读次数:
161
// O(nlogn) class Solution { public: int lengthOfLIS(vector& nums) { int n = nums.size(); if (n dp; dp.push_back(nums[0]); for (int i = 1; i & nums) {... ...
分类:
其他好文 时间:
2018-12-08 15:43:09
阅读次数:
164