
字符串
字符串
Legendout
退役ACM银牌loser
展开
-
P3975 [TJOI2015]弦论 (SAM)
[TJOI2015]弦论 - 洛谷感觉位置不同算相同还是比较好想的,我们top排序后算每个点后面连接了多少点就知道里面有多少字串了,然后求k大就行了;考了位置不同算不同的话,我们就要考虑endpos了。那么具体体现在SAM上,就是后缀链接。如果有链接,就说明出现过相同后缀,我们才把他们连接在一起对吧;不然后缀链接就会接在根节点,这是性质。那么我们初始值就不设为1,在后缀链接上一样跑一次求和,就把位置不同的也考虑上了。那么最后求k小还有一点,就是假如k小于后缀链接上的和,就说明这里的点不需要考虑,原创 2022-05-26 20:45:17 · 235 阅读 · 0 评论 -
P1368 【模板】最小表示法 (后缀自动机)
【模板】最小表示法 - 洛谷正解是线性的,但是这题s的范围好像不是很大,后缀自动机也能水过去qaq。虽然学的时候很痛苦,但是用起来真爽啊hhhh咳咳,回到正题。这道题求字典序最小,又是最后一个移到第一个的典中典,无疑就是把数组复制一份接上找字典序最小啦。此时上后缀自动机可以快速解决。map一维表示这点上的数字,二维是下一个点的下标。/*keep on going and never give up*/#include<bits/stdc++.h>using namesp原创 2022-05-16 12:29:51 · 293 阅读 · 1 评论 -
花空烟水流 (hash 搜索)
登录—专业IT笔试面试备考平台_牛客网考虑枚举答案长度,然后把原串所有该长度的子串hash一下,再搜索该长度下的字典序最小。随便想想发现不会太长。但写的时候并没想到/*keep on going and never give up*/#include<bits/stdc++.h>using namespace std;#define int long long#define ll long long#define inf 1e14#define fast std::ios:原创 2022-05-15 23:41:24 · 112 阅读 · 0 评论 -
花非花 (manacher算法)
登录—专业IT笔试面试备考平台_牛客网给一个数组,问从每个i往后有多少回文串以i为左端点。考虑manacher,用p数组做差分,对每一个最长的回文串的左端点加一,右端点减一,跑一遍即可。/*keep on going and never give up*/#include<bits/stdc++.h>using namespace std;#define int long long#define ll long long#define inf 1e14#define f原创 2022-05-15 22:40:06 · 218 阅读 · 0 评论 -
SP7258 SUBLEX (后缀自动机)
SUBLEX - Lexicographical Substring Search - 洛谷题意给定一个字符串,求本质不同排名第k小的子串输入格式:第一行给定主串(len<=90000)第二行给定询问个数T<=500随后给出T行T个询问,每次询问排名第k小的串,范围在int内输出格式:对于每一个询问,输出T行,每行为排名第k小的串题解:后缀自动机比较板的一道题,问字串第k小,我们用自动机本身的a-z字典序挨个判断,如果在里面就进去再判断。预处理没见过,我太原创 2022-05-12 23:03:56 · 214 阅读 · 0 评论 -
后缀自动机 AC自动机
ps:这两个自动机算是字符串算法里最抽象的了。AC自动机还好学会了,后缀自动机断断续续学了两天没学会,只搞懂了大概。关于构造后缀自动机的第三种情况拆点总觉得似懂非懂。先给个板子,以后再补详解。(希望不咕~)void ex_sam(int c){ int p=las,np=las=++cnt;num[cnt]=1; tre[np].len=tre[p].len+1; for(;p&&!tre[p].ch[c];p=tre[p].fa)tre[p].ch[c]=np原创 2022-05-10 19:11:21 · 913 阅读 · 0 评论 -
P5149 会议座位(逆序对 离散化 hash 归并排序)
STL大法好~原创 2022-03-17 18:36:55 · 371 阅读 · 0 评论 -
P4824 [USACO15FEB] Censoring S (栈模拟,KMP)
题意:Farmer John为他的奶牛们订阅了Good Hooveskeeping杂志,因此他们在谷仓等待挤奶期间,可以有足够的文章可供阅读。不幸的是,最新一期的文章包含一篇关于如何烹制完美牛排的不恰当的文章,FJ不愿让他的奶牛们看到这些内容。FJ已经根据杂志的所有文字,创建了一个字符串 SS ( SS 的长度保证不超过 10^6 ),他想删除其中的子串 TT ,他将删去 SS 中第一次出现的子串 TT ,然后不断重复这一过程,直到 SS 中不存在子串 TT 。注意:每次删除一个子串后,可能会出原创 2022-03-08 18:07:17 · 915 阅读 · 0 评论 -
CF1200E Compress Words(KMP)
题意:Amugae有n个单词,他想把这个n个单词变成一个句子,具体来说就是从左到右依次把两个单词合并成一个单词.合并两个单词的时候,要找到最大的i(i\ge 0)i(i≥0),满足第一个单词的长度为ii的后缀和第二个单词长度为ii的前缀相等,然后把第二个单词第ii位以后的部分接到第一个单词后面.输出最后那个单词。题解:这题事实上要我们求的是:当前拼接好的串的后缀 和 待拼接串的前缀 的最大匹配长度。可能有点绕,我们结合样例2来理解下。当前拼接好的串 samplesample待拼接原创 2022-03-08 15:21:26 · 850 阅读 · 0 评论