问题引出:给出一个集合N,求出其中第k小的数,第K小的元素指对集合L中的元素升序排列好后第K的元素。 1:惯性思维是对该集合中的每个数进行排序,然后找到索引为k的元素,最好的情况应该是O(nlogn) 2:BFPTR算法,一个即使是最坏情况下,也能达到O(n)的算法,通过对这个算法的学习,很直观的感 ...
分类:
编程语言 时间:
2020-04-04 00:03:29
阅读次数:
94
序 ~~乓乓球~~ 话说天津的玩梗真的是... 正文 做这个题,其实暴力一分也得不了....因为我的 $O(nlogn)$ 不开 O2 最快的点也才跑了200+ms...然后大概就是这么想,我们在暴力的基础上优化一下。反正这样子应该可以简化反正就4个字符... 就是说,我们预处理出每个(子串)东西的 ...
分类:
其他好文 时间:
2020-04-03 00:53:38
阅读次数:
63
快速排序核心就是分治法,通过划分将待排序的序列分成前后两部分,其中前一部分的数据都比后一部分的数据要小,然后再递归调用函数对两部分的序列分别进行快速排序,以此使整个序列达到有序,其时间复杂度为O(nlogn)。该算法步骤如下: 1、从序列中任选一个数作为基准数,一般就使用第一个数; 2、分区,将大于 ...
分类:
编程语言 时间:
2020-04-02 01:31:34
阅读次数:
100
"传送门" 好像大家都是拿这道题作为树上启发式合并的板子题。 树上启发式合并,英文是 dsu on tree,感觉还是中文的说法更准确,因为这个算法和并查集(dsu)没有任何关系。一般用来求解有根树的所有子树的统计问题。 根据轻重儿子的各种性质,可以证明这个算法的时间复杂度为 $O(nlogn)$, ...
分类:
其他好文 时间:
2020-03-31 12:19:48
阅读次数:
75
You have an array of . Each log is a space delimited string of words. For each log, the first word in each log is an alphanumeric identifier . Then, e ...
分类:
编程语言 时间:
2020-03-30 09:46:15
阅读次数:
93
作用有待更新.... 大佬博客:https://www.cnblogs.com/jinkun113/p/4743694.html; https://www.luogu.com.cn/problemnew/solution/P3809; 后缀数组: 复杂度:N(NlogN) 理论原理加模板: 后缀数组 ...
分类:
编程语言 时间:
2020-03-28 20:10:52
阅读次数:
85
预备知识 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结 ...
分类:
编程语言 时间:
2020-03-28 20:03:13
阅读次数:
88
分析 这道题题目已经很裸了,不需要题意解释,看数据范围发现n3的效率肯定过不了,四边形不等式的n2呢?求最大值,不能用,而某nlogn的算法,盒盒,看不懂,所以考虑一种别的办法。 引理 合并区间(i,j)的石子时,最优断开位置k要么是i+1,要么是j-1。下面是证明(当然不是我写的啦,引用某大佬的证 ...
分类:
其他好文 时间:
2020-03-28 13:39:39
阅读次数:
60
背景 快速排序,是在上世纪60年代,由美国人东尼·霍尔提出的一种排序方法。这种排序方式,在当时已经是非常快的一种排序了。因此在命名上,才将之称为“快速排序”。这个算法是二十世纪的七大算法之一,平均情况下时间复杂度为Ο(nlogn),而且在O(nlogn)的情况下,实际的运算速度都要快于其他同时间复杂 ...
分类:
编程语言 时间:
2020-03-27 19:52:25
阅读次数:
51
题目链接:使数组唯一的最小增量 题意:给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。 返回使 A 中的每个值都是唯一的最少操作次数。 题解: 1、暴力sort。O(nlogn)。排序以后,如果当前数字<=前一个数字,那么就把当前的数字变成前一个数字+1。 增量就是A[ ...
分类:
编程语言 时间:
2020-03-23 00:31:39
阅读次数:
73