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
BZOJ3998
后缀自动机例题精讲
这一篇是后缀自动机的一些例题题解及总结:例:
bzoj3998
题意:求一个字符串中第k小子串,t=0表示子串仅区别字典序,t=1表示子串区分起止位置解析:建起后缀自动机,构造parent树,利用后缀自动机有向无环累计子串个数查询即可具体解析
lleozhang
·
2020-08-21 00:09
字符串
后缀自动机
[
BZOJ3998
]TJOI2015弦论|后缀自动机
对SAM不太熟做这题想了很久才想清楚。。大爷们的博客都写的好简(我太弱) 首先对原串建SAM。。如果能求出f[i]表示以root走到状态i的路径为开头往后能得到的串的数量,我们就可以像线段树那样的查询了(26分?)。。设num[i]为已确定的一条root到i的路径对应的子串数量,当T=0的时候,显然num[i]=1,num[root]=0;对于T=1,root到i的路径对应的串还可以作为另一
Tag_king
·
2020-08-08 13:31
BZOJ
BZOJ3998
[TJOI2015]弦论(后缀自动机求字典序第k小子串)
题目链接先考虑相同子串算不同的情况性质一:后缀自动机中parent树中一个节点子树中np类节点的个数为该串在原串中出现的次数根据这个性质可以通过一遍parent树上的dfs求出每个点的出现次数后缀自动机里每个节点代表的串是多个的,但是这些串出现的次数都是一样的。因此我们沿着字符边走到一个点的时候,这个点的权值就是这个字符串的出现次数此时可以考虑到和权值线段树找第k大的思路:树上二分记录一个点的新值
Philosophiofantasia
·
2020-07-05 03:43
后缀自动机
bzoj
bzoj3998
后缀数组复习
对于一个给定长度为N的字符串,求它的第K小子串是什么。其中可能有重复和不重复的K小子串。我只会后缀数组sa做法当T=0的询问,我们从sa[i]开始,每次sa[i]这个后缀,我们会加入n-sa[i]+1个子串,其中height[i]个是和sa[i-1]重复的,所以我们记一个变量每次加上n+1-height[i]-sa[i],一旦超过k,则从sa[i]开始长度为k-pre+height[i]的串,为什
lpf_as_an_oier
·
2020-07-04 22:24
后缀数组
国庆七天乐_day2
bzoj3998
弦论(后缀自动机)
传送门题意:求字典序第k小的字串对于T为0的情况,每个状态我们计数都为1对于T为1的情况,对于每个状态他的计数应加上他fail树结束节点的个数(实际的对应串的个数)然后随便DFS就好了#pragmaGCCoptimize(2)#pragmaGCCoptimize(3)#pragmaGCCoptimize(4)#includeusingnamespacestd;typedeflonglongll;c
Murphyc
·
2020-06-22 02:32
SA/SAM
SAM
bzoj
[
BZOJ3998
][TJOI2015]弦论 后缀自动机
题意求给定字符串的第k大子串看这里其实知道后缀自动机的性质后推敲一下还是蛮好理解的。他在胡说#include#include#include#include#defineN500010usingnamespacestd;structSAM_{intnext[N=26)return;putchar('a'+i);w=next[w][i];}}}SAM;intt,k,len;charA[N];intm
LowestJN
·
2017-01-30 19:52
后缀自动机
【TJOI2015】【
BZOJ3998
】弦论
DescriptionSolution后缀三姐妹都可以做这题。我选择最短的。后缀自动机不会的参照后缀自动机学习小记建出后缀自动机。先对后缀自动机拓扑一下(其实是为了方便求构出的字符串的个数和right集合的个数),其实不用真的求拓扑序,把len排个序就好了,很显然len的顺序就是拓扑序。然后求出当前这个状态right的集合的大小(表示这个状态的字符串出现了多少次)。那么求答案一个dfs就可以了,但
Facico
·
2016-08-16 20:57
省选
BZOJ
后缀自动机
【
BZOJ3998
】【TJOI2015】 弦论 后缀自动机
%%%陈老师%%%神奇的后缀自动机。。。看陈老师的WC讲稿PPT真的是每一页都有无穷无尽的信息量%%%搭配15年某(两位?)神犇的的集训队论文一起食用味道更好哟%%%这种照抄黄学长板子我自己都没怎么搞清楚的东西就不放题解了。。。/************************************************************** Problem:3998 User:Ri
qq_34637390
·
2016-05-02 18:00
bzoj3998
【TJOI2015】弦论
3998:[TJOI2015]弦论TimeLimit: 10Sec MemoryLimit: 256MBSubmit: 1481 Solved: 501[Submit][Status][Discuss]Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input 第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。
AaronPolaris
·
2016-04-26 23:12
后缀自动机
OIer的狂欢
bzoj3998
【TJOI2015】弦论
3998:[TJOI2015]弦论TimeLimit: 10Sec MemoryLimit: 256MBSubmit: 1481 Solved: 501[Submit][Status][Discuss]Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input 第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。
AaronGZK
·
2016-04-26 23:00
后缀自动机
bzoj
bzoj3998
【TJOI2015】弦论
3998:[TJOI2015]弦论TimeLimit: 10Sec MemoryLimit: 256MBSubmit: 1481 Solved: 501[Submit][Status][Discuss]Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input 第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。
AaronGZK
·
2016-04-26 23:00
后缀自动机
bzoj
[
BZOJ3998
][TJOI2015]弦论
[TJOI2015]弦论Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。Output输出仅一行,为一个数字串,为第K小的子串。如果子串数目不足K个,则输出-1SampleInputaabc03Sam
hbhcy98
·
2016-04-08 00:00
后缀自动机
【
bzoj3998
】[TJOI2015]弦论 后缀自动机
Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。Output输出仅一行,为一个数字串,为第K小的子串。如果子串数目不足K个,则输出-1SampleInputaabc 03 SampleOutput
LOI_DQS
·
2016-03-01 11:00
BZOJ3998
: [TJOI2015]弦论
一开始想构造后缀树来着后来发现就是SAM上面跑一下就好了时间感人QAQ#include #include #include usingnamespacestd; charc; inlinevoidread(int&a) { a=0;doc=getchar();while(c'9'); while(c='0')a=(atime=1; ne->end=true; ne->len=last->len+
liutian429073576
·
2016-02-26 21:00
bzoj3998
[TJOI2015]弦论(SAM)
Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input 第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。Output输出仅一行,为一个数字串,为第K小的子串。如果子串数目不足K个,则输出-1SampleInputaabc03SampleOutputa
hahalidaxin
·
2016-02-19 13:00
bzoj3998
题意:给出字符串,求其中字典序第k小的子串。我们设Ans[s]为状态s之后一共有多少子串,这个在建完图之后倒叙更新一遍就可以了。#include #include #include #include #include #include #include #include usingnamespacestd; intn,T,K; chars[1000010]; structnode{ inttot,
jzhang1
·
2016-01-21 18:00
bzoj3998
弦论
好久没写SAM了,复习一下/**************************************************************Problem:3998User:ClareLanguage:C++Result:AcceptedTime:7520msMemory:127252kb*************************************************
Clarehehe
·
2016-01-09 11:34
后缀自动机
BZOJ3998
: [TJOI2015]弦论
求本质不同的第k小子串:求出后缀数组,从0开始扫到n-1,到sa[i]为止一共有sum[i]个本质不同的子串sum[i]=sum[i-1]+n-sa[i]-height[i]直到sum[i]>=k为止 求第k小子串:构造后缀树,设f[x]表示以x为前缀的子串数目,g[x]表示以x为前缀的后缀数目查询时从根开始一路往下分治即可 #include<cstdio>
·
2015-10-31 11:52
ZOJ
SAM习题集合
挖坑:3277347334132806278025553897【
bzoj3998
】求第k小子字符串,分算上重复和不算上重复。
GEOTCBRL
·
2015-09-11 21:00
【TJOI2015】【
BZOJ3998
】弦论
Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。Output输出仅一行,为一个数字串,为第K小的子串。如果子串数目不足K个,则输出-1SampleInputaabc03SampleOutputaab
CreationAugust
·
2015-08-30 16:02
随便搞搞
模板题库
【TJOI2015】【
BZOJ3998
】弦论
Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input第一行是一个仅由小写英文字母构成的字符串S第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。Output输出仅一行,为一个数字串,为第K小的子串。如果子串数目不足K个,则输出-1SampleInputaabc03SampleOutputaab
CreationAugust
·
2015-08-30 16:00
后缀自动机
【
BZOJ3998
】【TJOI2015】弦论 后缀自动机
链接:#include intmain() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/45369569"); }题解:首先我们可以建一个后缀自动机。然后每条路径走到每个点都是一个串,它们是有字典序的。我们只需要统计出往每个点走之后都有多少串就好了。fi=(∑fson)+numi对于不计重
Vmurder
·
2015-04-29 17:00
后缀自动机
BZOJ3998
TJOI2015
弦论
上一页
1
下一页
按字母分类:
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
其他