E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
ACM-后缀数组
HDU 5763 Another Meaning (DP+KMP||
后缀数组
)
题意:给你两个字符串,A,B,A中每一个B字符串都有两种意思,问A总共可以有多少种意思。|A|,|B|usingnamespacestd;constintmaxn=1e5+5;constintmod=1e9+7;charstr1[maxn],str2[maxn];intNext[maxn],isE[maxn];intdp[maxn];voidmakeNext(char*s){intlen=strl
cillyb
·
2017-09-04 23:53
KMP
DP
后缀数组
bzoj2251 [2010Beijing WC]外星联络(
后缀数组
+暴力)
用
后缀数组
处理出h数组,每个子串第一次出现时,往后扫,看重复了几次。n=3000,暴力即可。
Icefox_zhx
·
2017-08-03 12:59
SA
bzoj
F - Anti-Rhyme Pairs(rmq算法模板)(
后缀数组
算法模板)
点击打开链接题目大意:通常押韵的两个词以相同的字符结尾。我们运用这个特性来规定反押韵的概念。反押韵是一对拥有近似开头的单词。一对单词的反押韵的复杂度被定义为两者都以之开头且最长的字符串S的长度。因此,"arboreal"和"arturus"是复杂度为2的一对反押韵,且"chalkboard"和"overboard"是一对复杂度为0的反押韵。你将得到一列单词。你的任务是,得到一列(i,j)形式的问题
Draven__
·
2017-07-31 13:54
姗姗杯
算法
后缀数组
练习题bzoj 1031
后缀数组
模板题目
id=1031这是一道显然的
后缀数组
模板题目。
kamisamaxmd
·
2017-07-27 20:00
字符串
uoj P35 后缀排序
传送门妥妥的
后缀数组
裸题(主要是楼主菜只会打这种题目),还有拓展lucas还没调对qwq菜飞了。。。求sa和lcp,就是
后缀数组
求sa和height。
Leo_Riddle
·
2017-07-11 14:05
后缀数组
uoj
JZOJ 100037【NOIP2017提高A组模拟7.11】
后缀数组
题目描述:给出S的SA,求S最少的不同字符的个数。1=rank[SA[i+1]+1]则必有S[SA[i]]#definefo(i,x,y)for(inti=x;i=rank[SA[i+1]+1])ans++;printf("%d\n",ans);}}
Cold_Chair
·
2017-07-10 19:29
Suffix
array
JZOJ 100037【NOIP2017提高A组模拟7.11】
后缀数组
题目描述:给出S的SA,求S最少的不同字符的个数。1=rank[SA[i+1]+1]则必有S[SA[i]]#definefo(i,x,y)for(inti=x;i=rank[SA[i+1]+1])ans++;printf("%d\n",ans);}}
Cold_Chair
·
2017-07-10 19:29
Suffix
array
BZOJ4516 [Sdoi2016]生成魔咒 后缀自动机/
后缀数组
题意:一个串初始为空,n次像串尾添加元素,每次添加后回答本质不同的子串个数n usingnamespacestd; constintmaxn=100009,Log=18; intc[maxn],t[maxn],t2[maxn],sa[maxn],rank[maxn],height[maxn]; ints[maxn],b[maxn],ft[maxn],nxt[maxn],pre[maxn]; in
Flere825
·
2017-06-14 21:00
后缀数据结构
*
后缀数组
今天是2017/5/31,DCDCBigBig的第十六篇博文
后缀数组
(SA+Rank+Height)#include#include#include#includeusingnamespacestd;intrank
DCDCBigBig
·
2017-05-31 21:51
算法-字符串
*
后缀数组
今天是2017/5/31,DCDCBigBig的第十六篇博文
后缀数组
(SA+Rank+Height)#include#include#include#includeusingnamespacestd;intrank
DCDCBigBig
·
2017-05-31 21:51
算法-字符串
后缀数组
复习小记
定义:suf[i]表示以i为开头的后缀rank[i]表示suf[i]的排名,sa[i]表示排名为i的后缀height[i]表示sa[i]和sa[i-1]的lcph[i]表示suf[i]和suf[sa[rank[i]-1]]的lcpsa[rank[i]]=i,所以只要能求出rank,就可以求sa倍增求rank相当于把n个后缀排序,直接暴力排,显然是O(n^2*log(n))我们可以考虑假如已经处理了
Drin_E
·
2017-04-24 22:01
后缀数组
[JZOJ5084]子串
1≤n≤500000题目分析对s构造
后缀数组
,然后考虑从大到小枚举LCP的长度,然后每次答案加上LCP长度大于等于该值的子串个数。
a_crazy_czy
·
2017-04-24 17:00
后缀数组
OI
[BZOJ4199][NOI2015]品酒大会
后缀数组
像这种“r相似”的题目是一种套路,搞出SA之后按height数组合并集合。统计答案的时候注意细节代码:typenode=recordt,id:int64;end;constmaxn=300100;maxl=-1000000000;varn,i,j,p,q:longint;max,min,size:array[0..maxn]ofint64;s:ansistring;a,rank,sa,x,y,bu
DOFYPXY
·
2017-04-18 21:30
后缀数组
【jzoj5052】【旅游路线】【
后缀数组
】
题目大意A君准备在Z国进行一次旅行,Z国中有n个城市,城市从1到n进行编号,其中1号城市为Z国首都。Z国的旅行交通网由n-1条单向道路构成,并且从任何一个城市出发都可以通过旅行网到达首都。一条旅行交通网中的旅行线路,可以用线路上所经过的城市来描述,如{v1,v2,v3,……,vm},它表示一条经过了m个城市的旅行路线,且城市vi到城市vi+1有一条单向道路相连。两个城市是相似的,当且仅当他们所连接
inklutcuah
·
2017-04-14 15:01
jzoj
字符串
The Week Code - Issue #1
本周推送的五题具体知识点如下:hash+
后缀数组
链表
coderpai
·
2017-04-11 11:29
acm
ACM
ACM-
大整数除法
问题描述求两个大的正整数相除的商输入数据第1行是测试数据的组数n,每组测试数据占2行,第1行是被除数,第2行是除数。每组测试数据之间有一个空行,每行数据不超过100个字符输出要求n行,每组测试数据有一行输出是相应的整数商输入样例32405337312963373359009260457742057439230496493930355595797660791082739646298719258531
嘻嘻兮
·
2017-04-01 00:54
ACM题解
ACM-
大整数乘法
问题描述求两个不超过200位的非负整数的积。输入数据有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出要求一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。输入样例1234567890098765432100输出样例1219326311126352690000解题思路在下面的例子程序中,用unsignedan1[200]和unsigned
嘻嘻兮
·
2017-03-30 23:44
ACM题解
后缀自动机的性质应用
两个串的最长公共子串这个问题可以用DP来解决,也可以用
后缀数组
。
clover_hxy
·
2017-03-29 09:41
后缀自动机
bzoj 3796: Mushroom追妹纸 (
后缀数组
+KMP+二分)
还是好好想
后缀数组
的做法吧。这道题最恶心的限制就是限制3:s3不是w的子串。那么如果没有这个限制该怎么做呢?我们用间隔符连接s1,s2,用
后缀数组
求出height数组。
clover_hxy
·
2017-03-28 16:21
字符串处理
后缀数组
KMP
[BZOJ3796]Mushroom追妹纸(hash+
后缀数组
+二分)
题目描述传送门题解把s1和s2接在一起,中间加一个分隔符预处理出s3在s1和s2中的哪些位置出现过(hash)求出sa和height,容易知道答案一定在相邻的两个在不同串里的后缀中产生对于每一对相邻的后缀,二分一下满足条件的最大长度,即没有出现s3(前缀和)时间复杂度O(nlogn)代码#include#include#include#include#includeusingnamespacest
Clove_unique
·
2017-03-28 16:22
题解
hash
后缀数组
二分
SA(
后缀数组
)——倍增法模板
倍增法原理:一步一步把n个后缀按照它们的前2^k的字符排序。当我们求出按前2^k个字符排序的顺序时,对于按照前2^(k+1)个字符的排序,可以把它拆成前后两个2^k个字符部分,由于它们的顺序我们是知道的,于是打一个二维桶排即可。Height_i表示排名第i位的后缀和排名第i-1位的后缀的最长公共前缀。Height性质:Height_rank[j]>=Height_rank[j-1]-1P.S:可以
Cold_Chair
·
2017-03-17 21:34
模版
Suffix
array
后缀数组
_不相同的子串的个数
给定一个字符串,求不相同的子串的个数。算法分析:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffix(sa[2]),suffix(sa[3]),......,suffix(sa[n])的顺序计算,不难发现,对于每一次新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有hei
Gitfan
·
2017-03-11 15:09
后缀数组
http://uoj.ac/problem/35#include#include#include#definemaxn100005usingnamespacestd;chars[maxn];intsa[maxn],t[maxn],t2[maxn],c[maxn],Rank[maxn],height[maxn],n;voidbuild_sa(intm){inti,*x=t,*y=t2,*T,p;n+
Gitfan
·
2017-03-10 10:52
POJ 2217
我的第一想法就是二分子串的长度,开始想用哈希搞一搞,后来发现还是还是
后缀数组
扎实。
Andymion
·
2017-03-08 18:28
字符串
Manacher算法详解
算法详解RT,Manacher算法今天第一次写,有不少细节,也容易写错,下面进行一个小小的总结原理首先,我们应该已经看到过很多有关回文串的题目了,当我们不会Manacher的时候,我们往往是用回文自动机
后缀数组
代替的
Renatus_Goseqh
·
2017-03-03 15:14
Manacher
[BZOJ4310]跳蚤
后缀数组
+线段树
一个log的题被我强行写成了两个log诶再怎么样过了就是了构建SA,然后二分答案,贪心判断至少要剪断多少次才能使得答案成为最大的/**************************************************************Problem:4310User:di4CoveRyLanguage:C++Result:AcceptedTime:12576msMemory:1
HbFS-
·
2017-03-03 08:46
后缀数组
ACM-
子串(字符串处理)
问题描述有一些由英文字符组成的大小写敏感的字符串。请写一个程序,找到一个最长的字符串x,使得:对于已经给出的字符串中的任意一个y,x或者是y的子串、或者x中的字符反序之后得到的新字符串是y的子串。输入数据输入:输入的第一行是一个整数t(1#includeusingnamespacestd;intt,n;charstr[100][101];intsearchMaxSubString(char*sou
嘻嘻兮
·
2017-02-24 12:41
ACM题解
[BZOJ4199][Noi2015]品酒大会(
后缀数组
+并查集)
题目描述传送门题解别出心裁的一道sa,想了好久。。40ptsO(n2)的做法应该很好想吧sa+st表就可以了qwq100pts首先求出height数组考虑如果只求一个r的话怎么做显然可以将height数组分组,每个组里都是height>=r的,然后对于每一个组计数+取max那么如果有多个r呢?显然r大的要比r小的分的组少一些换句话说就是如果已经将r分组,再将r-1分组的时候,可以往上一次分的组里插
Clove_unique
·
2017-02-16 11:34
题解
并查集
NOI
后缀数组
POJ 2406(连续重复子串)
解题思路:法一:-可以使用
后缀数组
解决。-想法非常简单,就是穷举字符串S的长度k,然后判断是否满足。
nixinyis
·
2017-02-03 11:43
POJ的代码
后缀数组
&
后缀自动机
KMP匹配
正则引擎在数据包匹配中的工程分析
Boyer-Moore、Horspool、Sunday算法都是基于
后缀数组
的匹配算法,区别在于移动的方式不一样。MP是前缀匹配算法,R算法是hash匹配,AC自动机可以同时匹配多个pattern。
broler
·
2017-01-22 10:48
编程语言
bzoj 2251: [2010Beijing Wc]外星联络 (
后缀数组
)
2251:[2010BeijingWc]外星联络TimeLimit:30SecMemoryLimit:256MBSubmit:769Solved:459[Submit][Status][Discuss]Description小P在看过电影《超时空接触》(Contact)之后被深深的打动,决心致力于寻找外星人的事业。于是,他每天晚上都爬在屋顶上试图用自己的收音机收听外星人发来的信息。虽然他收听到的仅
clover_hxy
·
2016-12-29 20:01
后缀数组
后缀数组
学习笔记
后缀数组
定义搞懂定义是学习
后缀数组
的关键。子串:字符串S的子串r[i..j],i≤j,表示r串中从i到j这一段,就是顺次排列r[i],r[i+1],…,r[j]形成的字符串。
Clove_unique
·
2016-12-29 07:27
学习笔记
后缀数组
UOJ #35 后缀排序(
后缀数组
)
题目链接题解:
后缀数组
板子之前学
后缀数组
只是学了个大概,而且写的是二维的。现在从头理一遍,改成了算法导论上的写法。。
clover_hxy
·
2016-12-28 10:47
后缀数组
[BZOJ3238][Ahoi2013]差异(
后缀数组
+单调栈||后缀自动机+树形dp)
题目描述传送门题解这道题实际上还是非常有趣的。首先根据题目的描述答案应该为所有后缀的组合长度再减去两两的lcp首先算出来总和求出sa和height,用两次单调栈可以求出来以某一个点的height为最小值的最长区间可以发现以这个点为分界点,区间的左右两边两两组合最小值一定是当前点的height,也就是lcp的长度然后再计算答案就可以了然后这道题还有后缀自动机的做法因为是lcp,所以反过来建立后缀自动
Clove_unique
·
2016-12-28 10:50
题解
dp
省选
单调栈
后缀数组
后缀自动机
[BZOJ2251][2010Beijing Wc]外星联络(
后缀数组
)
题目描述传送门题解首先求出来sa和height然后其实就是暴力计算一下每一个后缀向后延伸多远。注意要去掉重复的,也就是说要从每一个最长的那个后缀开始,并且对于每一个后缀,要从大到小合并。时间复杂度O(nlogn+n2)代码#include#include#includeusingnamespacestd;#defineN3005chars[N];intn,m;int*x,*y,X[N],Y[N],
Clove_unique
·
2016-12-28 09:24
题解
后缀数组
[POJ1226]Substrings(
后缀数组
+二分)
只需要先将每个字符串都反过来写一遍,中间用一个互不相同的且没有出现在字符串中的字符隔开,再将n个字符串全部连起来,中间也是用一个互不相同的且没有出现在字符串中的字符隔开,求
后缀数组
。
Clove_unique
·
2016-12-27 23:21
题解
后缀数组
二分
[SPOJ220]PHRASES - Relevant Phrases of Annihilation(
后缀数组
+二分)
题解先将n个字符串连起来,中间用不相同的且没有出现在字符串中的字符隔开,求
后缀数组
。然后二分答案,再将后缀分组。
Clove_unique
·
2016-12-27 22:26
题解
后缀数组
二分
[POJ3415]Common Substrings(
后缀数组
+单调栈)
题目描述传送门题意:给定两个字符串A和B,求长度不小于k的公共子串的个数(可以相同)。题解首先把一个串接在另一个串的后面,中间放一个没出现过的字符。由于每一个子串都是某一个后缀的前缀,求出sa和height了之后,我们可以将height分组,组内都是height>=k的后缀。可以知道长度不小于k的公共子串是两个后缀的前缀,并且它们一定在同一组内。那么对于每一组,从前往后扫,假设遇到了A的后缀,那么
Clove_unique
·
2016-12-26 21:13
题解
单调栈
后缀数组
算法 KMP
恩,学完
后缀数组
,干脆想把AC自动机也给学了,然后发现貌似需要KMP的基础,于是打算顺便复习一下,顺便写个博客,增加下浏览量。
嘉庆帝
·
2016-12-03 14:01
算法
KMP
字符串
C++
后缀数组
详解
C++
后缀数组
详解嗯,
后缀数组
非常难讲,我对自己一点信心都没有TuT,各位神犇们如果有什么问题的话请评论教导蒟蒻。
_Mocha_
·
2016-12-02 14:54
算法笔记
后缀排序(
后缀数组
模板题)
测试一下模板#include#includeusingnamespacestd;constintmaxn=2e5+10;structSuffix{intr[maxn];intsa[maxn],rank[maxn],height[maxn];intt[maxn],t2[maxn],c[maxn],n,m;voidinit(strings){n=s.size();for(inti=0;i=0;i--)
Griffin_0
·
2016-11-06 16:47
后缀数组
HDOJ 5769 Substring
思路如果不考虑包含x字符的话,求不同子串个数是一个
后缀数组
经典问题(spoj694)。
Winterfell30
·
2016-10-25 21:06
HDOJ
后缀数组
HDOJ 5769 Substring
思路如果不考虑包含x字符的话,求不同子串个数是一个
后缀数组
经典问题(spoj694)。
Winterfell30
·
2016-10-25 21:06
HDOJ
后缀数组
ACM 所有算法
,队列,链表哈希表,哈希数组堆,优先队列双端队列可并堆左偏堆二叉查找树Treap伸展树并查集集合计数问题二分图的识别平衡二叉树二叉排序树线段树一维线段树二维线段树树状数组一维树状数组N维树状数组字典树
后缀数组
Tabris_
·
2016-10-24 22:16
4199: [Noi2015]品酒大会
(百度有hhh)这看上去就很
后缀数组
啊。。先处理出
后缀数组
(都快忘了咋整了)。。
CRZbulabula
·
2016-10-17 20:01
单调队列
后缀数组
EOJ1805 POJ2217 最长公共子串(
后缀数组
+高度数组)
EOJ1805上字符串的长度超过5万,
后缀数组
来解决此题不会超时,甚至可以说是解决此题的唯一算法。
Datow
·
2016-09-16 14:52
EOJ
后缀数组
POJ
字符串算法小结
hashkmp和ac自动机
后缀数组
,后缀自动机,后缀树扩展kmpmanacher算法回文自动机可删改的ac自动机不看复杂度乱搞hashhash就是把字符串每一位乘以一个阶,用于快速判断字符串是否相等。
bplusb
·
2016-09-07 01:56
后缀数组
(三)求给定字符串不相同的子串个数(hdu 4622 区间询问)
如果字符串是给定的,不询问区间,按照论文里写的,由于每个子串一定是某个后缀的前缀,相当于就是求后缀之间不相同前缀的个数。每次新加进来一个后缀,就是加上(n-sa[i]+1)个新前缀,但是其中有height[i]个前面已经算过了,减掉即可。这题询问的是一个区间[l,r],一开始的思路是,对于每一个sa[i]在l到r之间的后缀,按前面那种方法计算,同时注意考虑一下lcp的右边超过了r的情况,过了样例交
mtxxxx
·
2016-08-28 16:12
hdu
字符串
后缀数组
(二)利用height对sa数组分组的做法(poj 1743 & poj 3261 )
poj1743给定一个字符串,求最长重复子串,且这两个子串不重叠二分答案,判断答案k是否可行时,把
后缀数组
分成若干组,每组中重复子串的长度都大于或等于k(即height大于等于k),如果本组中sa的最大最小值之差大于
mtxxxx
·
2016-08-28 08:33
poj
字符串
后缀数组
(一)(模板题poj2774)
#include#include#includeusingnamespacestd;constintmaxn=200010;charss[maxn];intsa[maxn],t[maxn],t2[maxn],c[maxn],n,s[maxn];intRank[maxn],height[maxn];voidget_sa(intm){inti,*x=t,*y=t2;for(i=0;i=0;i--)sa
mtxxxx
·
2016-08-27 08:53
poj
字符串
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他