字符串
Facico
生命是闪耀的此刻,不是过程,就像芳香不需要道路一样。
展开
-
回文树学习小记
回文树(回文自动机)学习小记(Palindromic Tree)回文树,顾名思义,用回文串构成的一棵树,结合了一点AC自动机的思想,打起来不长,用起来挺方便。变量 首先满足AC自动机的结构。 定义集合tree: fail (指向该节点表示的回文串最长回文后缀在树中的节点,如abbba就是ababbabbba的最长回文后缀)。 son[26] (原创 2016-02-05 17:01:17 · 836 阅读 · 0 评论 -
【ZJOI2015】诸神眷顾的幻想乡
DescriptionSolution题意:有一个n个节点的树,每一个节点上有一个字符,定义路径为两点之间的字符组成的字符串,求有多少种不同的路径。trie上建SAM原图就是一个trie 很明显可以trie上打一个SAM,但是还是有一些从下到上的路径没有概括到。依次把所有叶子节点视为根节点依次把每个叶子节点视为根节点建一棵trie,然后做后缀自动机,这样就可以把每个叶子方向开始的路径概括到。 其原创 2016-08-18 16:19:20 · 1233 阅读 · 0 评论 -
【NOIP模拟】Word
Description有k个字符串{S1,S2,…,Sk},其中的每个字符不是空格,就是26个小写英文字母中的一个。对于常数 l和d,我们的目标是从这k个字符串中得出一个(l,d)-样词,它是一个长度为l的字符串W=W[1]W[2]…W[l],它的每个字符必须符合下面的条件: 每个字符串Si(i=1,2,…,k)都有一个长度为l的子串X=X[1]X[2]…X[l],X和W的出错率小于或等于d。(X原创 2016-09-10 14:20:33 · 623 阅读 · 0 评论 -
【NOIP提高模拟】奇洛金卡达
Description阿良良木历将要迎来人生(不,是吸血鬼生涯)的第三次战斗——与身为人类的奇洛金卡达在直江津高中的操场solo,以取回Heartunderblade的左右手。 奇洛金卡达。留着刺猬头、外形像神父的男子。靠着自身信仰,来消灭吸血鬼的砖家。奇洛金卡达还是某个新兴宗教的大主教,那个宗教的教义,否定了怪异的存在。 呐,在战斗之前,我们来研究一下那个新兴宗教的教义吧。教义被某种方式加密成原创 2016-09-01 15:32:25 · 1148 阅读 · 0 评论 -
【51Nod1277】字符串中的最大值
Description一个字符串的前缀是指包含该字符第一个字母的连续子串,例如:abcd的所有前缀为a, ab, abc, abcd。 给出一个字符串S,求其所有前缀中,字符长度与出现次数的乘积的最大值。 例如:S = “abababa” 所有的前缀如下:“a”, 长度与出现次数的乘积 1 * 4 = 4, “ab”,长度与出现次数的乘积 2 * 3 = 6, “aba”, 长度与出现次数的原创 2016-09-19 22:13:07 · 1080 阅读 · 0 评论 -
【51Nod1292】字符串中的最大值
Description有一个字符串T。字符串S的F函数值可以如下计算:F(S) = L * S在T中出现的次数(L为字符串S的长度)。求所有T的子串S中,函数F(S)的最大值。Solution也是后缀自动机的经典操作。 我打的这题才发现,我打字符串中的最大值是有一个bug,不过有这个bug也可以拿好多分。 在每个串出现的次数的初始化时,只有每个1~n对应的点才有值,很显然(即cc[np]=1)。原创 2016-09-19 22:18:39 · 789 阅读 · 0 评论 -
【GDOI模拟】妮厨的愤怒
Description栋栋和标标都是厨力++的妮厨。俗话说“一机房不容二厨”,他们两个都加入了某OI( )交流♂( )群,在钦定老婆的时候出现了偏差,于是闹得不可开交。可是栋栋是群内的长者,斗权限标标斗不过他。 于是标标单方面找到了LL仲裁庭,还帮栋栋出了律师的钱,要求按基本法来判定。法官点点喝了口果汁,仔细审查了案子,说中央资瓷栋栋连任,这是最吼的;标标还naive ,不要总想着搞一原创 2016-09-25 10:02:34 · 778 阅读 · 0 评论 -
【NOIP2016提高A组五校联考2】string
Description给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位。 由于答案可能很大,模10^9 + 7 输出。Solution这题不是道水题吗!每个位置一次的去做,然后后面直接算就可以了,对组合数的基础掌握吗!Code#include<iostream>#in原创 2016-10-05 14:52:47 · 681 阅读 · 0 评论 -
扩展KMP复习小记
简介KMP大家都耳熟能详,扩展KMP只是一个扩展版而已,字面意思啦! 我记得以前打过这个复习小记的,但是不知为何失踪了。KMP与扩展KMP的对比KMP的next[i]表示从1到i的字符串s,前缀和后缀的最长重叠长度。 EXKMP的next[i]表示从1到i的字符串s,和从i到n的字符串st的最长重叠长度。 也就是说KMP是向前的匹配,EXKMP是向后匹配。 扩展KMP问题是KMP问题的补充和原创 2016-07-29 23:35:57 · 1788 阅读 · 0 评论 -
NOIP2014八校联考第3场第1试10.4】反抗希碧拉系统续(regex)
Description虽然一科的反抗行动失败了,但那次行动已使反抗希碧拉系统的观念深入人心,而作为分析官的你也找到了系统的某处漏洞,机会依然存在,你要为下一次反抗做好准备。 直接使用电磁脉冲破坏系统在上次被证明是不可行的,现在只能试图渗透进系统寻找突破口。你现在可以从漏洞监听到中枢中每个单元大脑间的通信,并筛选出其中符合某规则的一些进行更深入的分析。规则可以描述为一个特殊的正则表达式,有如下递归定原创 2017-01-17 21:26:25 · 1081 阅读 · 0 评论 -
【GDKOI2017模拟1.21】Rhyme
Description由于多次交换邮票没有满足所有人的需求,小Z被赶出了集邮部。无处可去的小Z决定加入音乐部,为了让音乐部的人注意到自己的才华,小Z想写一首曲子。为了让自己的曲子更好听,小Z找到了一些好听曲子作为模板。曲谱可以表示成只包含小写字母的字符串,小Z希望自己最终的曲谱中任意一个长度为K的子串都是一个模板的子串。现在小Z想知道自己的曲谱最长可以是多长,如果可以无限长的话请输出INF。Solu原创 2017-01-21 20:16:02 · 589 阅读 · 0 评论 -
【NOI2017模拟4.5】无限棋盘【哈希,字符串,倍增】
Description无聊的小A在一个无限大的棋盘上玩游戏,这个棋盘由一个M*N的模板不停重复生成。例如,当模板为: honi hsin 时,我们会生成如下棋盘: …honihonihonihoni… …hsinhsinhsinhsin… …honihonihonihoni… …hsinhsinhsinhsin… 其中,该棋盘在任意一个方向都可以无限延伸。 现在小A在棋盘上随机挑选原创 2017-04-06 16:58:09 · 1177 阅读 · 0 评论 -
【GDOI2017第三轮模拟day2】魔法咒语(AC自动机,矩阵乘法)
Description Solution这道题目的60分非常的简单,直接用ac自动机直接搞一搞就好了。 但是后面的40分怎么做? 我们发现后面的40分全部都是基本单词长度不会大于2,所以我们可以考虑一下怎么矩阵乘法。 假设我们的转移的矩阵有两个部分:[i-1,i] 那么我们要转移到[i,i+1] 当单词长度为1的时候,可以从i转移到i+1,i-1转移到i 当单词长度为2的识货,可以从i原创 2017-04-22 16:25:43 · 912 阅读 · 0 评论 -
【GDOI2017 day1】微信
Description题意就是,给你n个字符串,然后给你一些二进制,然后求二进制为1的位置他们的最长公共子串。Solution这就是一道SAM的裸题。 构出一颗trie,然后trie上建SAM(要用bfs来建),然后每个节点标记一个二进制,最后每个fail树上的父亲把儿子的标记全部or起来。 然后把这个二进制状态更新到子集上,如果3n3^n枚举子集会超时,随意要1位位的往下转移2nn2^nnCo原创 2017-05-07 08:26:35 · 764 阅读 · 0 评论 -
【GDOI 2016 】最长公共子串
DescriptionSolution很明显的,有相交的区间可以合并为一个区间。 那么很明显的一个思路就是把S串中的每一个字符所在的块中所有的字符数统计起来,然后设f[i][j]为T串的第i个结尾和S串的第j个结尾最长的后缀匹配为f[i][j],那么每次匹配i和j的时候都会有两种情况: 当前需要匹配a[i] 因为是f[i-1][j-1]推过来的,所以原来已经用过了许多a[i]这个字符,所以可能原创 2016-08-03 12:15:03 · 752 阅读 · 0 评论 -
【GDOI2012】字符串
Descriptionmmm正在学习字典序。现在老师给她布置了一个作业:给出一个字符串,问该字符串的所有不同的子串中,按字典序排第K的字串。由于众所周知的原因,mmm需要你为她解决这个问题。Solution这里与TJOI2015弦论几乎是一样的,比那题还要水很多。 根本就不用担心爆栈什么的。 后缀自动机直接秒过。Code#include<iostream> #include<cstdio>#原创 2016-08-16 21:49:29 · 1014 阅读 · 0 评论 -
【CF 578D】LCS again
Description现在有一个长度为n的串S,其中每一个字母都是前m个小写字母 计算有多少个不同的长度为n的T(其中T也是由前m个小写字母组成),并且S与T的LCS为n-1 LCS就是同时存在于S和T的最长子序列Description很眼熟的题目,但是不会做。 题解给了一个不用DP的机智做法。 我们现在采取的策略是,用算重方案数减去重复的方案数。 我们考虑三个条件: 1、取出哪个字符原创 2016-07-20 21:04:33 · 1759 阅读 · 3 评论 -
后缀数组复习小记
后缀数组复习小记【Suffix Array】 后缀数组,顾名思义就是处理后缀的数组。例如daabbc的后缀:daabbc,aabbc,abbc,bbc,bc,c六个后缀。 ——>定义sa[i]为排名第i个的后缀的第一个字符在原字符串中的序号。如上面的sa[1]=2,因为后缀从序号2开始的aabbc排第一个。 ——>定义rank[i]为序号从i开始的后缀排第几个。如上面的ran原创 2016-02-03 18:42:17 · 874 阅读 · 0 评论 -
【GDOI2014】beyond
【GDOI2014】beyondDescription 有两个长度为n的字符串s,st,找出两个串前i个可以循环同构的最大长度。 如abcdx,cdabx两个串,答案为4。s的第一到第二个字符于st的第三到第四的字符相等。Solution 很容易想到在s中枚举一个分界点i左边的字符 然后,很容易想到求得一个exa[i]为st的s从i开始的字符串最长公共前缀的长度。求得一个exb[i]为s的原创 2016-01-23 20:14:22 · 1141 阅读 · 0 评论 -
【GDKOI2016】项链Code&Details
Details首先,我们得出了结论,两个回文串相交才符合条件,在总结上已经说了。 然后假设当前这位枚举到一个回文串的中心i,那么再找另一个会问串中心满足两个条件:1、i-p[i]<=j+p[j](两个回文串相交);2、i-j<=n(两个回文串中心的距离不得超过原串的长度,否则可能不合法) 那么我们把所有的i+p[i]放进一个线段树中。维护max。 然后枚举字符串中心i,在max(1,i-n)到原创 2016-03-04 22:02:39 · 781 阅读 · 0 评论 -
【SDOI2014】数数
【SDOI2014】数数Description计算不大于N且不包含S中的数的个数。Solution 首先计算一个不大于N的数,而且还有一些限制,很明显就是数位DP。一个字符串在另一个字符串集合中操作,很容易想到AC自动机。 如果要做DP,首先有一个i表示从高位到低位,做到第i位。要在AC自动机中匹配,还要加一个j,表示当前在AC自动机中节点为j。然后还要一个经典,0或1,表示当前数位小原创 2016-01-28 15:52:11 · 1087 阅读 · 0 评论 -
【SCOI2012】喵星球上的点名
【SCOI2012】喵星球上的点名Description 有n个串,代表n个人的姓氏和名字,都是用很多个数字表示的,比如我姓1,2,3,4,名4,5,6,7。然后有m个点名串,如果点到了某个人的姓或名里面的某一串,那个人就被点到,不过一个人在一个点名串中只能被点一次。比如点名串是2,3,4,我的姓中含有2,3,4,那么我就会被叫到。求每个学生分别被叫到多少次,和每个点名串分别叫到多少个学生原创 2016-01-25 07:33:39 · 1369 阅读 · 0 评论 -
GDKOI总结
GDKOI总结Day 1:Problem 1要维护所有连续子段xor的和,支持修改,很明显是线段树。我开始打了棵维护连续xor的线段树a1和维护a1的线段树a2,由于打的十分暴力,交上去只有30分。用十棵线段树来维护每一位的0和1的个数就能100。比赛是没想到,打只有30分的方法浪费了很多时间。Problem 2这道题用全排列暴力只有20分。原创 2016-02-23 18:54:11 · 1275 阅读 · 0 评论 -
字符串hash的用处
简介hash(哈希)。 把字符串用一种特定的方式放到一个数组里面。用处我目前学的短,只知道两个用处。1、字符串判重相信很多人都会。2、可以快速判断同一个字符串中的两段字符串是否相等maxx=10007;...fo(len,1,n)h[len]=h[len-1]*maxx+s[len];//c++可以不用打hash这个十分的爽,因为能自动的弹出一个数(可正可负)fo(len,1,n)g[i原创 2016-04-28 19:58:42 · 5231 阅读 · 0 评论 -
【GDOI模拟】习用之语
DescriptionSolution中华文化,博大精深! 一看到这题,第一眼的反应就是字典树。 但是仔细一想,好像要开一两二三四….好多颗字典树,好麻烦啊…… 想到代码量这么长,就不想打了。 然后往短里想,好像判断某几位的时候可以用排序来做。 通过c++的优势,开始打排序的判断函数,一两二三四……好多个啊…… 又不想打了。 最后才发现一开始一点都不机智。 我用一个dfs枚举要判断哪原创 2016-04-17 00:24:35 · 866 阅读 · 0 评论 -
【JZOJ4598】准备食物
Description“~妖梦,我又饿了!” 魂魄妖梦身为西行寺家的专属庭师第二代兼大小姐的西行寺幽幽子的护卫,却承担了为幽幽子准备食物的任务。幽幽子是个非常贪吃的亡灵,所以妖梦经常为食物的问题所困。 现在,妖梦有n盘食物排成一排,第i盘食物有一个属性a[i]。亡灵的体质比较特殊,所以妖梦认为食物的属性很重要。妖梦会进行q次询问,每次给出两个整数r,k,她想知道有多少个区间[i,r](1≤i≤r原创 2016-07-09 20:36:33 · 870 阅读 · 0 评论 -
【APIO2016】字符串匹配
DescriptionSolution刚看到这题,最有想法,这不是一道水题吗! 然后脑抽打了个后缀数组加KMP(其实只用KMP就好了),然后打的又臭又长,最后还爆零了。我的KMP尽然从1开始搜!!!!!TAT 主要思路:分两种情况 1、S比T短,设S在T中出现次数为o,然后答案先加上n*o,然后再找中间出现的次数,设S的长度为m,把T的后m-1个和T的前m-1个组成新的字符串A,然后求得S在A原创 2016-07-14 08:33:41 · 791 阅读 · 0 评论 -
【NOIP模拟】项链
Description经过一番周折,Bob找到了Alice,为了安慰Alice惊魂未定的心,Bob决定给Alice买一条手链,这条手链由M个珍珠组成,每个珍珠上刻着不同的小写字母。当Alice看到一些字母按照一定的顺序排列成的字符串时,就会产生一定的愉悦值。Bob现在可以在这M个珍珠上刻上字母,现在他想知道,如何刻字母可以使得Alice的愉悦值最大。SolutionAC自动机这是道很神奇的题目,我和原创 2016-07-18 10:51:29 · 1061 阅读 · 0 评论 -
【CF 682D】String
Description有两种字符串S,T。长度分别为n,m。现在需要在S里面有序地选出k个子串,且在T中出现的顺序与这k个子串的顺序相同。问这k个子串最大的长度和Solution动态规划求最优解,还是字符串上的,这种题一看就知道是DP。 构造状态,很容易想到f[i][j][k],i表示匹配到S的第i个点,j表示匹配到T的第j个点,k表示分了k段。 然后,比赛的时候就没往下想了,每次不知道当前的串原创 2016-07-08 19:29:38 · 1137 阅读 · 0 评论 -
【NOIP模拟】弄提纲
Description新日暮里中,比冲是一位博学的哲学教授。由于最近要帮学生准备考试,他决定弄个提纲给学生。然而同事van不服气,觉得这样学生就没有了自我思考,便在提纲中添加废话。 比冲很无奈,他想找回原稿。我们把现在的提纲看成是一个字符串S。他知道van只会在原稿结尾添加语句,也就是说,原稿是S的前缀。 现在比冲有m个询问,以此来找出原稿。每次给出两个位置l,r,问以l与r结尾的字符串中,有多原创 2016-07-19 20:11:12 · 623 阅读 · 0 评论 -
【GDOI模拟】无界单词
Description你在坐飞机的时候总是喜欢随便写点文字以打发时间。 对于一个单词S,如果存在一个长度L,满足0Solution这是一道很神奇的题目。正常的直接用字符串的算法做不了的话那么就是字符串上DP了。 首先,第一个答案很好算,用f[i]表示长度为i的无界单词有多少个。 发现有界单词比较好求,所以可以用总数减去所有的有界单词就是无界单词的个数。首先我们可以知道一个结论就是用一个长度大于原创 2016-04-28 19:27:55 · 1019 阅读 · 0 评论