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
——后缀数组
[海军国际项目办公室]游戏
游戏题目描述题解我们可以考虑转化到
后缀数组
上来。我们将串AAA与串BBB接在一起,将所有后缀按照字典序进行排序。
StaroForgin
·
2021-10-07 16:39
#
线段树
算法
一篇文章带你了解C++的KMP算法
目录KMP算法步骤1:先计算子串中的前
后缀数组
NextC++代码:步骤2:查找子串在母串中出现的位置。
·
2021-08-15 17:57
第三章_字符串_2019-03-18
字符串的特点重要广泛性1、可以将字符串转化为字符数组2、很多题貌似不是字符串类型,但是可以转化为字符串类型题解决常见概念回文、子串、子序列(不连续)、前缀树(Trie树)、后缀树和
后缀数组
、匹配、字典序常见操作增
雨住多一横
·
2021-06-23 18:57
BZOJ-[SCOI2012]喵星球上的点名(
后缀数组
正解:Suffix Array+ST+Binary Search+BIT+sort)
id=2754网上大神们的正解都是用AC自动机,蒟蒻不会写AC自动机,只能
后缀数组
硬着头皮上了。
AmadeusChan
·
2021-06-19 05:32
后缀数组
_不可重叠最长重复子串
http://poj.org/problem?id=1743先二分答案,把题目变成判定性问题:判断是否存在两个长度为k的子串是相同的,且不重叠。解决这个问题的关键还是利用height数组。把排序后的后缀分成若干组,其中每组的后缀之间的height值都不小于k。有希望成为最长公共前缀不小于k的两个后缀一定在同一组。然后对于每组后缀,只须判断每个后缀的sa值的最大值和最小值之差是否不小于k。如果有一组
Gitfan
·
2021-04-20 23:34
2021-02-10:如何求出两个字符串的最大公共子串长度?
3.
后缀数组
。时间复杂度是O(M+N
福大大架构师每日一题
·
2021-02-10 16:18
福大大架构师每日一题
算法
golang
试题 算法训练
后缀数组
——最长重复子串
资源限制时间限制:100ms内存限制:256.0MB问题描述给定一个长度为n的数串,求至少出现k次的最长重复子串的长度,这k个子串可以重叠。保证有子串出现至少k次。输入格式第一行:两个整数n,k;第二行:2到n+1行:n个整数,这n个整数组成了一个数串。输出格式一个整数,表示最长重复子串的长度。样例输入8212323231样例输出4数据规模和约定0≤n≤20000,2≤k≤n,0≤数串中的整数≤1
先生卖我几斤仁义道德
·
2021-01-31 23:14
蓝桥杯
c++
【POJ】3415 Common Substrings 【
后缀数组
+单调栈】
传送门:【POJ】3415CommonSubstrings题目分析:题目要求的实质是计算A的所有后缀和B的所有后缀之间的最长公共前缀的长度,然后把最长公共前缀长度不小于k的部分全部加起来(即A的后缀ai和B的后缀bj的最长公共前缀为x且x大于等于k,则答案累加上x-k+1)。由于枚举所有ai和bj的话是O(n^2)的复杂度,所以我们需要一些技巧来优化。比较好的方法是单调栈。首先将两个串连接到一起,
poursoul
·
2020-09-17 06:27
后缀数组【SA】
poj 3415 Common Substrings(
后缀数组
+单调栈+dp)
题目链接:点击打开链接博主是看了
后缀数组
那篇论文后,然后做了这道题练手。论文原文:基本思路是计算A的所有后缀和B的所有后缀之间的最长公共前缀的长度,把最长公共前缀长度不小于k的部分全部加起来。
qq_36398723
·
2020-09-17 06:59
ACM/ICPC
POJ - 3415 Common Substrings(
后缀数组
+ 单调栈)
思路:两个子串,我们用
后缀数组
维护,把两个子串合并在一起,然后中间加一个特殊字符。{看网上别人的博客。一个n长度的子串,我们把后边填一个0,就是在位置n上加0,这个字符串我们从0编号。
Top_xiao
·
2020-09-17 05:03
#
后缀数组
POJ_3415 Common Substrings
后缀数组
题目链接:http://poj.org/problem?id=3415题意:给你两个字符串str0、str1和K,求一共有多少个这样的三元组S{i,j,k}={(i,j,k)|str0{i...i+k-1}==str1{j..j+k-1}}。思路:题意就是在str0中找一个i,在str1中找一个j,要求他们的最长公共前缀l>=K,这样这组i,j对答案的贡献值就是l-K+1,最后我们要求的就是所有这
ivan_zjj
·
2020-09-17 05:30
ACM-杂题
poj 3415 Common Substrings (
后缀数组
+单调栈)
CommonSubstringsTimeLimit:5000MSMemoryLimit:65536KTotalSubmissions:10446Accepted:3444DescriptionAsubstringofastringTisdefinedas:T(i,k)=TiTi+1...Ti+k-1,1≤i≤i+k-1≤|T|.GiventwostringsA,BandoneintegerK,we
clover_hxy
·
2020-09-17 05:18
后缀数组
单调栈
POJ3415--Common Substrings(
后缀数组
+单调栈优化)
DescriptionAsubstringofastringTisdefinedas:T(i,k)=TiTi+1...Ti+k-1,1≤i≤i+k-1≤|T|.GiventwostringsA,BandoneintegerK,wedefineS,asetoftriples(i,j,k):S={(i,j,k)|k≥K,A(i,k)=B(j,k)}.Youaretogivethevalueof|S|f
SCUT_Pein
·
2020-09-17 05:38
字符串_后缀数组
Common Substrings POJ - 3415
后缀数组
+单调栈
AsubstringofastringTisdefinedas:T(i,k)=TiTi+1...Ti+k-1,1≤i≤i+k-1≤|T|.GiventwostringsA,BandoneintegerK,wedefineS,asetoftriples(i,j,k):S={(i,j,k)|k≥K,A(i,k)=B(j,k)}.Youaretogivethevalueof|S|forspecificA
YCQ_Lancet
·
2020-09-17 05:37
后缀数组
Common Substrings POJ - 3415(后缀自动机)
https://vjudge.net/problem/POJ-3415其实很早以前这道题就过了,但不过因为
后缀数组
的方法自己也不是很懂就没有写。今天我学了一下后缀自动机,我们利用后缀自动机解决。
KXL5180
·
2020-09-17 05:32
字符串
POJ 3415-Common Substrings(
后缀数组
+单调栈-公共子串的长度)
CommonSubstringsTimeLimit:5000MSMemoryLimit:65536KTotalSubmissions:10850Accepted:3587DescriptionAsubstringofastringTisdefinedas:T(i,k)=TiTi+1...Ti+k-1,1≤i≤i+k-1≤|T|.GiventwostringsA,BandoneintegerK,we
kewlgrl
·
2020-09-17 05:32
POJ
高级计划
ACM_KMP/后缀数组
POJ3415: Common Substring 题解
先把两个串拼起来,中间用不会出现的字符连一下然后求一下
后缀数组
和高度数组然后可以用一个单调栈维护一下lcp数组对于来自A的后缀,我们要统计它后面的来自B的后缀的答案,同样对于来自B的后缀,我们要统计它后面的来自
IcePrincess_1968
·
2020-09-17 05:31
SA
POJ 3415 Common Substrings(
后缀数组
+单调栈)
转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526by---cxlove题目:求出长度不小于k的公共子串个数http://poj.org/problem?id=3415继续论文上的题目。计算A的某个后缀与B的某个后缀的最长公共前缀长度,如果长度L大于k,则加上L-k+1组。将两个字符串连接起来,中间用一个没有出现的字符
ACM_cxlove
·
2020-09-17 05:58
ACM_字符串
foj 2075 Substring
题目思路:
后缀数组
加单调栈,n为1的时候要特判,不过数据有点水,不判都能过。
iteye_13045
·
2020-09-16 23:01
数据结构
扩展KMP算法(Extend KMP) 学习小记 Hdu 4333 Revolving Digits
这里有一个字符串算法大集合:字符串:KMPEentend-Kmp自动机trie图trie树后缀树
后缀数组
-星星的日志Hdu4333RevolvingDigits题意:给出一个不含前导0的数字
时雨晴天
·
2020-09-16 19:33
学习轨迹
KMP
exKMP
字符串
腾讯SOSO面试总结-细节决定成败
第二题想到了使用
后缀数组
,然后blabla说了一堆。回来网上查到好像后缀树解法最优。第三题要把边界和特殊情况考虑清楚,他给了
Garfier
·
2020-09-16 11:59
求职
面试
腾讯
算法
编程
java 实现
后缀数组
及最长回文子串问题
摘要:
后缀数组
的java实现。利用
后缀数组
来求解最长回文子串问题。关键词:
后缀数组
,倍增算法,基数排序,height[]数组,最长回文子串参考文献:《
后缀数组
_处理字符串的有效工具》。
ccfeng2008
·
2020-09-16 05:44
算法
源代码
Java编程
后缀排序[
后缀数组
详细整理]
#35.后缀排序统计描述提交自定义测试这是一道模板题。读入一个长度为nn的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置。位置编号为11到nn。除此之外为了进一步证明你确实有给后缀排序的超能力,请另外输出n−1n−1个整数分别表示排序后相邻后缀的最长公共前缀的长度。输入格式一行一个长度为nn的仅包含小写英文字母的字符串。输
weixin_34085658
·
2020-09-16 00:49
数据结构与算法
K-th occurrence HDU - 6704 (主席树+
后缀数组
+二分)
题目传送题意:给出一个字符串,找出某个子串第k次出现的位置思路:
后缀数组
sa[i]数组表示排名第i的后缀第一次出现的下标,求第k次出现的下标只需要在某个区间中求sa数组中的第k大即可(主席树求第k大),
speaker__
·
2020-09-15 23:04
算法
主席树
后缀数组
第7章 代码
后缀数组
poj1743poj3415poj2758线段树poj2828每个人依次插队,pos表示这个人会差到第pos个人的右边,树状数组维护,开始的时候全置1,表示每个位置都有一个人,就是最终的状态,然后按照时间顺序倒序处理
as305323460
·
2020-09-15 22:56
第7章 高级数据结构的编程实验
题目列表:http://acm.hust.edu.cn/vjudge/contest/128581#overview
后缀数组
poj1743poj3415poj2758线段树poj2828poj3468poj2528poj3667
as305323460
·
2020-09-15 21:35
数据结构与算法
【算法刷题】一个字符串中连续出现次数最多的子串
//字符串中连续出现次数最多的子串//利用
后缀数组
后缀数组
是一种数据结构,对一个字符串生成相应的
后缀数组
后,然后再排序,排完序依次检测相邻的两个字符串的开头公共部分。
Neo_dot
·
2020-09-15 16:45
算法题
[BZOJ4650][NOI2016]优秀的拆分-
后缀数组
优秀的拆分Description如果一个字符串可以被拆分为AABBAABB的形式,其中AA和BB是任意非空字符串,则我们称该字符串的这种拆分是优秀的。例如,对于字符串aabaabaa,如果令A=aabA=aab,B=aB=a,我们就找到了这个字符串拆分成AABBAABB的一种方式。一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分。比如我们令A=aA=a,B=baaB=baa,也可以用AA
zlttttt
·
2020-09-15 16:25
后缀数组
【Suffix
Array】
[bzoj4650][Noi2016]优秀的拆分——
后缀数组
题目大意:定义一个字符串的拆分是优秀的当且仅当是AABBAABBAABB的形式,求给定字符串的所有子串的所有的拆分中有多少是优秀的。思路:95分太好拿了,这里直接考虑正解该怎么做。不难发现我们只需要求出每个点开头的AAAAAA形式的字符串和每个点结尾的AAAAAA字符串,然后枚举分割点两边乘起来就好了。可是关键是AAAAAA形式的字符串可能有n2n^2n2个,直接枚举的话一定不是正解。考虑分长度来
ylsoi
·
2020-09-15 16:55
后缀数组
BZOJ4650 NOI2016优秀的拆分(
后缀数组
)
显然只要求出以每个位置开始的AA串数量就可以了,将其和反串同位置的结果乘一下,加起来就是答案。考虑对每种长度的字符串计数。若当前考虑的A串长度为x,我们每隔x个字符设一个关键点,求出相邻两关键点的后缀lcp和前缀lcs,交叉部分就是跨过这两个关键点的A串长度为x的AA串个数。差分一发就能对每个位置求了。#include#include#include#include#include#include
weixin_30484247
·
2020-09-15 15:36
[kmp] bzoj3620: 似乎在梦中见过的样子
很神的一道题第一眼并没有想到
后缀数组
因为不会写也不知道是不是脑抽了还是刚复习完kmp就想到了kmp但是不会处理(因为我比较菜)看了题解才知道原来N^2做法可以过……好叭大佬也帮忙算了一波复杂度其实没有N
kkkGIGi_qtt
·
2020-09-15 14:32
bzoj
kmp
BZOJ4650: [Noi2016]优秀的拆分(Hash/SA)
复杂度为∑ni=1ni=O(nlogn)∑i=1nni=O(nlogn)用
后缀数组
维护
DZYO
·
2020-09-15 14:59
后缀数组
hash
[TJOI&HEOI2016]str/[JZOJ4614]字符串
1≤|S|,m≤105题目分析显然可以使用
后缀数组
,我们要求的是maxi∈[a,b]{min(d−c+1,b−i+1,LCP(sufi,sufc))}根据
后缀数组
的性质,LCP可以在排序后的数组上使用RMQ
a_crazy_czy
·
2020-09-15 13:02
其它比赛和题库
二分法
后缀自动机
后缀数组
主席树
[
后缀数组
] BZOJ4650: [Noi2016] 优秀的拆分
令fi表示以i结尾的AA类型字符串的个数,gi则表示以i为开头的那么答案就是∑fi×gi+1枚举A的长度L,每隔L个位置放一个关键点,那么A肯定经过一个关键点,用SA找一下就好了#include#include#include#includeusingnamespacestd;typedeflonglongll;constintN=100010;intt,n;chara[N];intt1[N],t
LowestJN
·
2020-09-15 13:49
后缀数组
BZOJ 4556 [Tjoi2016&Heoi2016]字符串
后缀数组
+可持久化线段树+二分啊啊啊智商好低,想了好久。一个直观的想法是在s[a…b]中找到和s[c…d]最接近的串,使得height最大。
Endless_Way
·
2020-09-15 13:32
字符串-后缀
数据结构-可持久化线段树
其它-二分/三分
字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树
后缀数组
duanple.blog.163.com/blog/static/709717672009825004092/涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机KMP算法Extend-KMP后缀树
后缀数组
lyso1
·
2020-09-15 06:16
编程-算法
力扣杯决赛第3题 寻找一个字符串中的最长重复子串(
后缀数组
)
/problems/longest-repeating-substring/参考https://blog.csdn.net/u012114090/article/details/81669021可使用
后缀数组
qq_23204557
·
2020-09-14 14:30
数据结构
后缀数组
的DC3模版【
后缀数组
】
/*之前一直用倍增法,发现有些题目卡倍增法,而DC3却能AC,所以顺便弄了DC3的模版,看以后会不会用到,嗯,就是酱紫提一些注意点:1.MAXN开n的十倍大小;2.dc3(r,sa,n+1,Max+1);r为待后缀处理的数组,sa为存储排名位置的数组,n+1和Max+1都和倍增一样3.calheight(r,sa,n);和倍增一样模版测试题目是SPOJ694/SPOJDISUBSTRDistinc
Joefery
·
2020-09-14 13:17
->
字符串
<-
后缀数组
SPOJ
SPOJ 687 REPEATS Repeats
后缀数组
+ RMQ预处理
题目大意:对于给出的字符串(长度=1,所以对于repetitionnumber为1的只需要找到字典序最小的那个字母即可,那么我们只考虑repetitionnumber>=2的情况,如果每一个循环节的长度为len,那么在原字符串S中,S[i*len]与S[(i+1)*len]一定会被包含在答案的子串当中那么枚举可能的答案的循环节的长度,然后枚举可能的位置,对于每一组可能被包含的位置S[i*len],
Gatevin
·
2020-09-14 04:39
ACM_RMQ
SPOJ
CF 504 E —— Misha and LCP on Tree —— 树剖+
后缀数组
题目:http://codeforces.com/contest/504/problem/E快速查询LCP,可以用
后缀数组
,但树上的字符串不是一个序列;所以考虑转化成序列——dfs序!
aodan5477
·
2020-09-14 00:39
SPOJ - SUBLEX
想到子串,我一开始想到的是自动机,虽然
后缀数组
可做此题,但我个人认为
后缀数组
处理子串问题较难。慢慢的,我想既然子串去重了,那么相当于后缀自动机的每一个状态啊,相同的子串在同一个状态里。建立SAM
My_stage
·
2020-09-14 00:12
字符串
SPOJ694&SPOJ705(
后缀数组
)
这俩题一样。。就后者数据范围大些。题目:给定一个字符串,求不相同的子串的个数。每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。从1到n扫一遍,每一个suffix[sa[i]]的贡献为n-sa[i]+1-height[i].(sa[i]的前缀个数-重复个数)#include#include#defineN50010intn,m,rank[N=1;--i)rank[i
Icefox_zhx
·
2020-09-14 00:34
其他oj
SA
Gym - 102302 K - Candies —— 主席树+
后缀数组
Thisway题意:给你一个长度为n的数组,让你取一段子区间使得这个区间里值得和>=L,usingnamespacestd;#definelllonglongconstintN=1e6+10;intwa[N],wb[N],wv[N],we[N],rk[N];intcmp(int*r,inta,intb,intl){returnr[a]==r[b]&&r[a+l]==r[b+l];}voidbuil
天翼之城*
·
2020-09-13 19:37
主席树
后缀数组
后缀树 &
后缀数组
KMP和AC自动机都是对模式串进行预处理,后缀树和
后缀数组
则是对文本串进行预处理。
weixin_30437847
·
2020-09-13 06:27
数据结构与算法
HDU 1403 Longest Common Substrung [
后缀数组
] [LCP] [LCS]
LongestCommonSubstringTimeLimit:4000MSMemoryLimit:32768KB64bitIOFormat:%I64d&%I64uDescriptionGiventwostrings,youhavetotellthelengthoftheLongestCommonSubstringofthem.Forexample:str1=bananastr2=cianaicS
JacquesdeH
·
2020-09-13 05:37
后缀数组
字符串处理
LCP
LCS
根据后缀树LCA计算
后缀数组
及其LCP
本文继续“根据后缀树得出
后缀数组
“的讨论,进一步探讨从后缀树计算
后缀数组
的LCP。
ljsspace
·
2020-09-13 05:01
数据结构和算法
Stringology
后缀数组
【摘要】本文介绍
后缀数组
的基本概念、方法以及应用。
include-LSS
·
2020-09-13 04:52
后缀数组
的自底向上(bottom-up)遍历算法
后缀数组
自底向上遍历等价于后缀树的自底向上遍历。
ljsspace
·
2020-09-12 13:54
Stringology
数据结构和算法
traversal
string
table
list
null
arrays
后缀数组
(入门) Suffix array【基数排序+倍增】
目录参考的相关链接什么是基数排序什么是倍增什么是
后缀数组
模板题[P3809【模板】后缀排序](https://www.luogu.com.cn/problem/P3809)代码参考的相关链接
后缀数组
的构建思想视频
+0呐~
·
2020-09-12 08:21
学习笔记
后缀数组
的使用笔记
主要参考了.罗穗骞《
后缀数组
——处理字符串的有力工具》和许智磊的
后缀数组
,现在能使用罗穗骞的dc3算法和倍增法倍增法模板o(nlgn)intwa[maxn],wb[maxn],wv[maxn],ws[maxn
yc0576
·
2020-09-12 08:04
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
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
其他