一, 给定一个区间,求所有区间长度为L的区间的最大值和最小值 二, 该题有很多做法。 自然用的是滑动窗口(单调队列) 可能的做法: O(nlogn)的线段树 O(nlogn)的带删除优先队列(对顶堆) 还能再快一点吗? O(n)-O(1)RMQ代替线段树 三, 单调队列和单调栈的意思一样,始终要你维 ...
分类:
其他好文 时间:
2019-12-14 19:36:17
阅读次数:
140
好烦啊$O(n^2)$跑得比$O(nlogn)$快【】 先把一些SB情况判掉 首先可以求出这个矩阵中每一列将被放到哪一列上了 于是先把列号变成目标状态趴OwO 然后你看这个$3\times 3$,每次修改只会交换奇偶性相同两列的位置,可以尝试一下分奇偶讨论,分别求出把奇偶列变成目标状态的次数,树状数 ...
分类:
编程语言 时间:
2019-12-14 00:01:20
阅读次数:
154
本文中 $n$ 代表着待排序序列的长度。 算法是否稳定:若 $a_i = a_j \ , \ i 1; merge(l,mid),merge(mid+1,r); mergesort(l,r,mid);return;//递归,先给小区间排序后大区间。 } merge(1,n); 上张图理解一下: 可用 ...
分类:
编程语言 时间:
2019-12-08 17:09:51
阅读次数:
94
排序算法: 快速排序: 时间复杂度O(nlogn) 空间复杂度1 适用于大多数排序,性能很高 不稳定排序 步骤描述: 取数组首元素为基准值。设置一个i指针指向首元素,再设置一个j指针指向尾元素。在i<j的前提下。从j开始往回找,遇到第一个比基准值小的数,将该元素与基准值交换,i++;再从i往后找,遇 ...
分类:
编程语言 时间:
2019-12-08 10:42:15
阅读次数:
76
算法复杂度分为时间复杂度和空间复杂度,是衡量一个算法优劣的标准。 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。 时间复杂度:参考https://blog.csdn.net/qq_41523096/article/details/82142747理解时间复杂 ...
分类:
编程语言 时间:
2019-12-04 01:22:07
阅读次数:
83
快速排序 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效... ...
分类:
编程语言 时间:
2019-12-02 23:08:44
阅读次数:
88
题目描述 给一棵 $n$ 个点的树,每条边的边权为 $1$ 。 强制在线。 有 $m$ 次询问,每次询问给出 $u^{\prime}, v^{\prime}, w^{\prime}$ ,令 $u=\left(u^{\prime}+\text {lastans}\right) \% n+1, v= \ ...
分类:
其他好文 时间:
2019-12-02 13:44:26
阅读次数:
74
快速排序为什么被称之为快速排序呢?从字面意思上来看肯定是因为它比较快啦。当然实际上也是这样,相比于其他的排序算法,它的平均的时间复杂度为O(nlogn),这可以说是很快的一种排序算法了。当然在某些情况下,也会出现比其他排序算法慢的情形,所以没有什么最好的排序算法,只有最合适的排序算法。所以在平常应用 ...
分类:
编程语言 时间:
2019-11-30 20:46:28
阅读次数:
90
一:判定质数 要判断一个数是不是质数,只需遍历小于等于它的所有数,如果它能被除了1和本身之外的数整除,那么它就不是质数。 很简单,暴力枚举,代码如下: 1 bool is_prime(int x) 2 { 3 if (x < 2) return false; 4 for (int i = 2; i ...
分类:
其他好文 时间:
2019-11-28 11:48:52
阅读次数:
80
O(nlogn) q[i]表示所有不同长度的最长上升子序列结尾的最小值。因为如果a[i]<a[j]<a[j+1],那么a[j+1]肯定大于a[i],因此我们只存最小值。 我们通过第i-1个数字来划分状态,由于子序列是递增的,所以可以通过二分查找出来小于a[i]的最大的那个数字。找到之后,将a[i]放 ...
分类:
其他好文 时间:
2019-11-26 22:58:08
阅读次数:
98