- 博客(5)
- 资源 (5)
- 收藏
- 关注
原创 数据结构之AC自动机
AC自动机,学会了有助于AC~~AC自动机相当于在Trie上跑KMP——用于解决字符串的多模板匹配问题。所谓的多模板匹配,是相对于单模板匹配而言。单模板匹配就是KMP中所说的给定一个模板串,在查询串里面寻找这个模板串(匹配),而多模板匹配顾名思义,也就是有多个模板串。对于这种问题,我们用KMP或者Trie当然是可以直接写的,只是复杂度过高罢了。比如给定m个平均长度为a的模板串,一个长度为n...
2018-08-31 22:57:41 1004
原创 数据结构之KMP
KMP主要用于字符串匹配,比如给一个长度为n的字符串s,然后再给一个长度为m的字符串t,问s中有没有连续子串和t一样(n>=m)显然,直接暴力求解,容易得到最坏O(m*(n-m))复杂度的算法。当这个朴素算法的复杂度不满足要求的时候,就需要用到我们经典的字符串匹配算法——KMP,复杂度为O(m+n)如下图所示,i指针指向字符串s,j指针指向t,当i从第一个字符a开始与t匹配,当i指到...
2018-08-29 01:10:03 360
原创 数据结构之前缀树(Trie)
前缀树,又叫字典树,主要用于字符串(不限于字符串)查询、统计、排序的一种数据结构比如,给定n个字符串,进行m次查询,每次查询给定一个字符串 t,问t 是否存在于那给定的n个字符串里这里,我们用到了前缀树,即将每个字符串看作一条链,把拥有相同前缀的字符串的链的相同前缀给合并,形成一棵棵子树。如给定三个字符串his,her,hit,得到前缀树:上图很清晰了,在右边的树里面从根出发,一直...
2018-08-29 00:30:34 761
原创 Git入门
Git是分布式版本控制系统,可以记录文本文件的不同版本内容,便于恢复和管理。由于是分布式,每台主机都可以有一个仓库,不是必须联网才能操作。一、安装Git我使用的是ubuntu和windows10这两个系统,对于ubuntu,直接执行git命令,如果没有这个命令就执行:sudo apt install git而对于windows10,有两种方法。1、git for window...
2018-08-28 13:24:37 4200
原创 BitMap算法和C++ STL里面的bitset
今天看到大数据处理的BitMap算法,可以有效地对空间进行压缩。一、BitMap基本思想在32位的机器上,一个int需要占据32位,而有时候这就是很大的空间浪费。比如没有重复数字的计数排序的时候,假设数据范围[0,1e8],则需要开辟数组int a[(int)1e8+1],a[i]表示i的出现的次数。这就需要大约400M的空间了。然而,由于数字不会重复,所以a[i]只会是0或1,那么32位...
2018-08-27 22:31:49 8281
Java连接mongoDB需要的jar包(3.9.1)
2018-12-12
Java连接mongoDB需要的jar包
2018-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人