字符串
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【jzoj4876】【基因突变】【exkmp】
题目大意707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为“源头基因”人类身上与源头基因完全匹配的片段越多,这个人就越容易被控制。于是707就开始了他邪恶的计划……作为人类卫士的射手ZMiG自然不会让707得逞,他决定拯救人类,现在他拿到了其中一个人被改造后的基因,他想请你统计一下它的基因中究竟有多少基因片段是可以与源原创 2016-11-08 22:13:58 · 379 阅读 · 0 评论 -
【jzoj5045】【无限棋盘】【哈希】
题目大意无聊的小A在一个无限大的棋盘上玩游戏,这个棋盘由一个M*N的模板不停重复生成。例如,当模板为:honihsin时,我们会生成如下棋盘:…honihonihonihoni……hsinhsinhsinhsin……honihonihonihoni……hsinhsinhsinhsin…其中,该棋盘在任意一个方向都可以无限延伸。现在小A在棋盘上随机挑选一个位置,又随机挑选一个方向(八个方向之一),并从原创 2017-04-06 10:37:03 · 563 阅读 · 0 评论 -
【jzoj5078】【GDOI2017第三轮模拟day2】【魔法咒语】【ac自动机】【矩阵快速幂】
题目大意解题思路对非法串构ac自动机,对于l较小的情况,设f[i][j]表示长度为i,在ac自动机上j点的方案数,直接dp即可。对于加入串len<=2的情况,对于每个j拆成两个点矩阵快速幂即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LD doub原创 2017-04-20 16:51:48 · 436 阅读 · 0 评论 -
【jzoj4072】【TJOI2015】【弦论(string)】【sam】
题目大意解题思路建出sam,对于零的情况直接统计儿子节点,对于一的情况统计right集的大小,统计子树和,走的时候看子树有多少种串,K大于它就直接减,看下一个,不然就递归进去,减去当前节点的贡献。code#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define ULL unsigned lo原创 2017-05-06 11:06:13 · 364 阅读 · 0 评论 -
【jzoj5084】【GDOI2017第四轮模拟day1】【子串】【后缀数组】
题目大意YJC最近写了一篇关于子串的论文。CJY看他那么喜欢子串,决定出一道题考考他。CJY给出了一个字符串s,令s[l~r]表示s中区间[l,r]构成的子串,下标从1开始。他向YJC提出了许多询问,每次询问给了四个数i,j,k,l,求LCP(s[i~k],s[j~l]),即每次询问两个子串的最长公共前缀。YJC很轻松地解决了这个问题。CJY表示很不爽,于是他改变了一下问题,让YJC求所有合法的询问原创 2017-04-24 16:36:59 · 531 阅读 · 0 评论 -
【后缀自动机sam学习小记】
定义顾名思义,后缀自动机就是可以识别原串所有后缀的自动机,最后回到达叶子状态,同时也可以识别所有连续子串。时间复杂度线性。由构造方法可知点数是线性的。构出sam后除了主链,即代表原串的链,其他的边要么就是构成了一个新的后缀,要么就是连接若干条构成了一个新的后缀的边,形成一个类似树的结构,所以边也是线性的。各种东西的意义很多性质都由定义得出,理解定义就可以发现很多性质。right一个字符串的right原创 2017-05-06 19:19:31 · 519 阅读 · 0 评论 -
【jzoj5093】【GDSOI2017第四轮模拟day3】【字符串匹配】【哈希】
题目大意对于一个字符集大小为C的字符串P,我们可以将任意两种字符在P中的位置进行互换,例如P=abcba,我们交换a,b就变为bacab,交换a,d就变为dbcbd,交换可以进行任意次。若交换后P变为了字符串Q,则我们称Q与P是匹配的。现在给定两个字符集大小为C的字符串S,T,请你求出S中有多少个连续子串与T是匹配的。解题思路每个位的值为与前一个相同颜色的位置差,对这个哈希即可判断是否同构,特殊处理原创 2017-04-26 21:22:48 · 538 阅读 · 0 评论 -
【jzoj5098】【GDOI2017 day1】【微信】【tire上建sam】
题目大意给出n个操作序列,每个操作序列包括两种操作,加一个字符和删除最后一个字符。中途所出现的串的子串成为这操作序列的生成子串,给定一个操作序列集,求其生成子串的交集,串的最长的长度。解题思路对每个操作序列建sam,每加入一个字符记录一下前驱,退格的时候是直接退,其他按sam的增量构建法来建。特别注意新加字符的时候,原本可能就有转移,我们看一下他们的mx是否相邻,否则就另建新点,同nq的情况。对于不原创 2017-05-09 17:11:19 · 511 阅读 · 0 评论 -
【jzoj4982】【GDOI2017模拟2.23】【加密】【sam】
题目大意身为特工,Star的任务除了获取敌人的情报外,当然还包括传递己方的情报。考虑到利用数字进行运算的加密方式容易被破译,他想到了一个借助字母的加密法。现在有一个包含N个小写字母的字符串S,其下标从0开始。Star用下列方式得到它对应的密码:1、光标初始位于下标0处;2、当光标位于i时,找到一个最长的子串S[j … j + len - 1],满足j < i,使得S[i … i + len - 1]原创 2017-05-22 21:35:53 · 674 阅读 · 0 评论 -
【jzoj5315】【NOIP2017提高A组模拟8.19】【小串串】【sam 】
descriptionsolution构出sam,求出fail树子树大小,贡献为size[x]^2*(mx[fa[x]]-mx[x])。code#include<set>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long long#define ULL unsigned lo原创 2017-08-19 17:24:17 · 344 阅读 · 0 评论 -
【jzoj5052】【旅游路线】【后缀数组】
题目大意A君准备在Z国进行一次旅行,Z国中有n个城市,城市从1到n进行编号,其中1号城市为Z国首都。Z国的旅行交通网由n-1条单向道路构成,并且从任何一个城市出发都可以通过旅行网到达首都。一条旅行交通网中的旅行线路,可以用线路上所经过的城市来描述,如{v1,v2,v3,……,vm},它表示一条经过了m个城市的旅行路线,且城市vi到城市vi+1有一条单向道路相连。两个城市是相似的,当且仅当他们所连接的原创 2017-04-14 15:18:01 · 440 阅读 · 0 评论 -
【jzoj4964】【Rhyme】【字符串哈希】【拓扑排序】
题目大意由于多次交换邮票没有满足所有人的需求,小Z被赶出了集邮部。无处可去的小Z决定加入音乐部,为了让音乐部的人注意到自己的才华,小Z想写一首曲子。为了让自己的曲子更好听,小Z找到了一些好听曲子作为模板。曲谱可以表示成只包含小写字母的字符串,小Z希望自己最终的曲谱中任意一个长度为K的子串都是一个模板的子串。现在小Z想知道自己的曲谱最长可以是多长,如果可以无限长的话请输出INF。解题思路将k-1的串哈原创 2017-01-27 15:37:07 · 457 阅读 · 0 评论 -
【jzoj3887】【字符串查询 】【二分查找】【可持久化trie】
题目大意给定n个字符串和q个询问每次询问在这n个字符串中,有多少个字符串同时满足1. 字符串a是它的前缀2. 字符串b是它的后缀解题思路先对字符串排序,倒着建可持久化trie,二分查找前缀,后缀在线查询。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#defin原创 2017-01-19 15:25:10 · 305 阅读 · 0 评论 -
【bzoj1031】【JSOI2007】【字符加密】【Cipher】【字符串】【后缀数组】
题目大意给出一个字符串,将他的循环同构排序,从小到大输出最后一个字符。解题思路显然sa,按rank输出即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i+原创 2016-07-20 22:11:37 · 296 阅读 · 0 评论 -
【jzoj4910】【子串】【字符串】【kmp】
题目大意有n个字符串,求编号最大的字符串,它前面有一个串不是它的子串。解题思路顺序枚举当前字符串now,维护一个指针表示最前一个不是当前串的子串的串,可以发现如果当前串是后面串的子串,前面的串也一定是后面串的子串,每个串都只考虑一次,所以复杂度是可以的。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>原创 2016-12-03 17:04:33 · 349 阅读 · 0 评论 -
【jzoj4886】【字符串】【动态规划】【kmp】
题目大意对于任意长度n的小写字母字符串,不包含给定字符串个数。解题思路f[i][j]表示第i个字符,与给定串匹配了j位的方案数。预先用kmp预处理好填一个字符会匹配到哪里,dp转移即可。code#include<cstdio>#include<cstring>#include<algorithm>#define min(a,b) ((a<b)?a:b)#define fo(i,j,k) fo原创 2016-11-14 08:20:57 · 512 阅读 · 0 评论 -
【jzoj4669】【弄提纲】【kmp】
题目大意给出一个字符串,询问分别以x,y结尾的子串是原串的前缀有多少个,最长串有多长,一对组合以x,y结尾的子串必须一样。解题思路可以使用kmp,可以发现就是求fail树上的lca。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long原创 2016-07-20 21:55:34 · 322 阅读 · 0 评论 -
【jzoj4624】【字符串匹配】【kmp】
题目大意求一个串在另一个串复制n遍的串出现几遍。题解显然将两个串做kmp,有很多重复,可以先把第二个串复制到比第一个串长,计算结果,增长一个串,计算结果,计算有多少个增长串,得到最终结果。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long lo原创 2016-07-14 19:15:08 · 328 阅读 · 0 评论 -
【jzoj4889】【最长公共回文子序列】【字符串】
题目大意给出一长一短两个字符串,求最长公共回文子序列解题思路枚举短串所有字串判断是否回文,在长串中查找,可以用二分,也可以倒着预处理最近的转移位置。code#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define min(a,b) ((a<b)?a:b)#define max(a,b) (原创 2016-11-12 22:02:21 · 361 阅读 · 0 评论 -
【jzoj3277】【GDOI2013】【哈希和】【后缀数组】
题目大意现在给出一个由小写字母组成的字符串s,以及m个询问,每个询问给出两个整数x,y(x<=y),表示询问s的所有不同的连续子串中,字典序排名为x到y之间的所有字符串的哈希值的总和(包括x和y)。解题思路对于原串求出前缀哈希值的前缀和,26次幂的前缀和,这样我们求可以求出任意区间的前缀哈希值的前缀和。跑一遍sa,求出每个后缀在字典序中排第几,按sa前缀和减去height就可以了。按字典序统计每个后原创 2017-01-06 22:51:31 · 339 阅读 · 0 评论 -
【后缀数组sa学习小记】
什么是后缀数组(sa)后缀数组就是将s的后缀按字典序排序,sa[i]表示字典序第i小的后缀从第几位开始。配合sa还有rank表示第i个后缀排第几,height表示第i小的后缀与第i-1小的后缀最长公共前缀是多少。怎么求后缀数组(sa)有两种方法可以求sa,但是最经济实惠(最简单)的是倍增法,这里我们只讨论倍增法。首先我们可以考虑倍增法,求出第i位开始二的次幂个字符的rank,显然可以利原创 2017-01-08 22:24:22 · 481 阅读 · 0 评论 -
【jzoj3870】【单词检索】【后缀数组】
题目大意由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。现在他向你求助,需要你编写程序完成这项艰巨的任务。解题思路题解是hash。我使用的是sa。考虑把所有的串并在一起,中间用没出现过的符号分隔。按heig原创 2017-01-16 11:42:55 · 293 阅读 · 0 评论 -
【jzoj5332】【NOIP2017提高A组模拟8.23】【密码】【ac自动机】【动态规划】
descriptionsolution先把秘钥建ac自动机,设f[i][j][k][l]表示现在填到第i位,对应ac自动机上j结点,包含k个秘钥,有没有顶上界,枚举下一个填什么转移即可。code#include<set>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long lon原创 2017-08-23 14:09:51 · 325 阅读 · 0 评论