首先说明 :后缀数组的构建在网上有多种方法:朴素的n*n*logn,还有倍增n*logn的,还有3*n的DC3算法,当然还有DC算法。这个算法学习自林厚丛老师的《高级数据结构》,代码较长,而且常数也比较大,但是是我这种笨人可以理解的。如有人想学短而快的可以学习《罗穗骞 后缀数组 处理字符串的有力工具 ...
分类:
编程语言 时间:
2017-02-21 19:19:00
阅读次数:
499
发现值域很小,而且怎么异或都不会超过1023……然后可以使用类似基数排序的思想,每次扫一遍就行了。 复杂度O(k*1024)。 ...
分类:
编程语言 时间:
2017-02-21 13:45:43
阅读次数:
359
据说是WC T2的子任务,ai<=2^32-1的基数排序,那么就把一个数分成几段多关键字基数排序就行了,类似后缀数组? 分成8位/8位/8位/8位比分成16位/16位要快【丧病的底层优化 代码如下: #include<iostream> #include<cstdio> #include<cstri ...
分类:
编程语言 时间:
2017-02-12 21:10:36
阅读次数:
220
地址 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序 ...
分类:
编程语言 时间:
2017-02-11 11:13:54
阅读次数:
170
题意: 求多个串<=10的最长连续子串 一个串建SAM,然后其他串在上面走 每个状态记录所有串在这个状态的公共子串的最小值 一个串在上面走的时候记录与每个状态公共子串的最大值,注意出现次数向父亲传递,一个状态能到达说明了Suffix Link指向的状态可以取到最大子串,这一步对val后基数排序然后倒 ...
分类:
其他好文 时间:
2017-02-07 22:29:52
阅读次数:
246
说明:转载于http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) ...
分类:
编程语言 时间:
2017-02-06 13:19:28
阅读次数:
281
一、CountSort 二、RadixSort 基数排序时间复杂度:O (nlog(r)m),其中r为所采取的基数,而m为堆数稳定性:稳定 ...
分类:
其他好文 时间:
2017-02-05 12:58:44
阅读次数:
158
算法,是永恒的技能,今天继续算法篇,将研究桶排序。 算法思想: 桶排序,其思想非常简单易懂,就是是将一个数据表分割成许多小数据集,每个数据集对应于一个新的集合(也就是所谓的桶bucket),然后每个bucket各自排序,或用不同的排序算法,或者递归的使用bucket sort算法,往往采用快速排序。 ...
分类:
编程语言 时间:
2017-01-23 17:09:29
阅读次数:
284
#include<stdio.h>int main(){ int i,j,n,t; int tong[11]; printf(" 请输入数字个数 :"); scanf("%d",&n); for(i=1;i<=n;i++) { tong[i]=0; } for(i=1;i<=n;i++) { sca ...
分类:
编程语言 时间:
2017-01-10 11:49:22
阅读次数:
145
10种排序算法,分别是直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,直接选择排序,树形排序,堆排序,归并排序,基数排序。各有千秋,但依旧有优劣之分,熟悉每一个算法,对于我们的代码优化,也将事半功倍。 1,直接插入排序: 基本思想: 假设待排的n个记录存放在变量R中,首先将R[1]看做是有 ...
分类:
编程语言 时间:
2017-01-10 08:23:33
阅读次数:
268