![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
文章平均质量分 58
Freopen
这个作者很懒,什么都没留下…
展开
-
「SDOI2017」文本校正
题目 分类讨论六种排列:ABC:ABC:ABC:一次哈希判断。CAB:CAB:CAB:枚举CCC的长度,总共nnn次哈希判断。BCA:BCA:BCA:枚举AAA的长度,总共nnn次哈希判断。CBA:CBA:CBA:构造新串P=s1tns2tn−1...snt1P = s_1t_ns_2t_{n-1}...s_nt_1P=s1tns2tn−1...snt1那么问题转化为将PPP划分为333个偶回文串。枚举第一个回文串的位置[1....2x][1....2x][1....2x],那么就原创 2020-07-08 10:26:10 · 561 阅读 · 0 评论 -
非数据结构向字符串算法
Periodicity Lemma的证明模板题:SDOI2017 文本校正接下来是bonus time看完这篇博客然后做这个更可做的题:转载 2020-07-07 21:34:16 · 284 阅读 · 0 评论 -
BZOJ 5384 有趣的字符串题(区间本质不同回文串数量)
题意:多次求区间本质不同回文串数量。我们知道区间本质不同子串个数是SAM+LCT+BIT。所以区间本质不同回文串个数就是PAM+SegmentTree+BIT。为什么可以搏一搏LCT变线段树呢?因为PAM同时有着组合border的离谱性质。套用区间本质不同子串个数的做法。那么我们需要离线后移动右端点RRR,然后更新一系列PAM上的节点的最后一次出现的时间并且在BIT上维护关于[L,R][L,R][L,R]内的本质不同回文串个数。考虑PAM上一条链,满足每个祖先都是后代的回文后缀,也就一定是b原创 2020-06-18 15:56:16 · 1439 阅读 · 0 评论 -
字符串作业(下)
完全做不动啊啊啊啊啊啊啊CF590E Birthday给定 nnn 个仅包含 a,ba,ba,b 的字符串。你需要去掉尽可能少的字符串,使得剩下的字符串中不存在某一个串是另一个串的子串。ACACAC自动机上路径压缩求出DAGDAGDAG,再传递闭包后求最长反链。拆点构图后求出最小链覆盖和方案。通过最小链覆盖构造出最长反链。AC Code\mathcal AC \ CodeAC Code#include<bits/stdc++.h>#define maxn原创 2020-06-11 22:42:22 · 503 阅读 · 0 评论 -
字符串作业(上)
「雅礼集训 2017 Day7」事情的相似度求区间[l,r][l,r][l,r]内两个前缀s[1..a],s[1...b](a,b∈[l,r],a≠b)s[1..a],s[1...b](a,b\in [l,r],a\neq b)s[1..a],s[1...b](a,b∈[l,r],a=b)的最长公共后缀长度的最大值。后缀自动机,用LCT\texttt{LCT}LCT维护fail\texttt{fail}fail树。离线,从前到后每次加入一个前缀,将这个前缀在后缀自动机上的点accessaccess原创 2020-06-11 17:32:06 · 337 阅读 · 0 评论 -
AC自动机九连测
T1:病毒侵袭T1:病毒侵袭T1:病毒侵袭AC Code\mathrm{AC \ Code}AC Code#include<bits/stdc++.h>#define maxn 100005#define maxc 95#define rep(i,j,k) for(int i=(j),LIM=(k);i<=LIM;i++)#define per(i...原创 2020-01-20 22:36:13 · 179 阅读 · 0 评论 -
回文树
大佬博客2017国家集训队论文,翁文涛《回文树及其应用》这论文太硬核了。。。。。转载 2019-05-13 15:00:38 · 384 阅读 · 0 评论 -
BZOJ 2946: [Poi2000]公共串 (广义后缀自动机在线处理)
给出几个由小写字母构成的单词,求它们最长的公共子串的长度。任务:l 读入单词l 计算最长公共子串的长度l 输出结果可以把广义后缀自动机造出来然后每个前缀的结束点往上暴力跳,直到当前点被当前串覆盖过为止。如果当前串长度为lll,自动机大小为nnn,那么复杂度是min(l2,n)min(l^2,n)min(l2,n)平均每个字符的复杂度贡献为min...原创 2019-03-28 19:14:28 · 170 阅读 · 0 评论 -
BZOJ 3238: [Ahoi2013]差异(后缀自动机构建后缀树)
题目这个式子一看好眼熟。就是求后缀树上所有后缀所在点的距离之和。后缀树有一个(自认为)很恶心优秀的O(n)O(n)O(n)后缀自动机求出来的后缀链接其实是前缀树。。。。。。把字符串反过来就能建树了。O(n∗26)O(n*26)O(n∗26)//262626是复制前向边的复杂度。AC Code:#include<bits/stdc++.h>#define maxn 10...原创 2019-03-28 19:39:40 · 295 阅读 · 0 评论 -
HDU 6694 Play Games with Rounddog(后缀自动机fail树上运用拟阵知识贪心求最大权值线性基)
题面题意:给出一个字符串S,∣S∣<=105S,|S|<=10^5S,∣S∣<=105,10510^5105次询问其一个子串TTT,对于TTT,AAA选出其若干个子串,有一个子串在SSS中出现次数为cic_ici,那么就可以有一堆有wciw_{c_i}wci个石子的石堆,然后BBB选出几个石堆(不能全部)扔掉,然后AAA先手做一个人每次拿走一个石堆中的正...原创 2019-08-27 16:42:45 · 300 阅读 · 0 评论 -
数位DP
数位DP顾名思义就是按照数位一位一位的DP。1.数位DP通过加一维状态标记前面的位数是否顶着上界来简化分类讨论。2.数位DP实际上是对长度固定的只含0~9的字符串的DP,要特别注意前导零对DP的影响,必要时加上前导零标记。3.多组数据时可以通过记忆化搜索保存没有顶着上界的DP值,实测超快,这也启发我们在记忆化搜索的时候不一定记忆化搜索的参数都要参与记忆化搜索。...原创 2019-02-20 10:23:22 · 94 阅读 · 0 评论 -
AC自动机优化爆搜
(这标题怎么这么无奈。。。。。。)顾名思义,就是在字符串爆搜的时候,如果有子串限制,并且限制有包含关系(即A串包含B串则如果B串被限制则A串也被限制),且判断是否限制耗时较长,可以想到搜索时map记忆化从长度为1到长度为n的后缀判断剪枝?但是不够快,可以建出广义后缀自动机或AC自动机(如果你可以接受)来直接从已判断过的最长后缀开始。...原创 2019-01-16 19:33:42 · 238 阅读 · 0 评论 -
广义后缀自动机
多个字符串共用一个后缀自动机,便于解决多个字符串的子串间的问题。模板题:4566: [Haoi2016]找相同字符Time Limit:20 SecMemory Limit:256 MBDescription给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两个子串中有一个位置不同。Input两行,两个字符串s...原创 2018-07-31 14:33:04 · 2482 阅读 · 0 评论 -
Lexicographical Substring Search SPOJ - SUBLEX
#include<cstdio>#include<cctype>#include<cstring>#include<algorithm>#define maxn 200005#define Maxc 26using namespace std;char s[maxn];int ch[maxn][Maxc] , len[maxn] ...原创 2018-07-31 20:31:37 · 174 阅读 · 0 评论 -
HDU 6405 Make ZYB Happy
题意:给出n(n&lt;=10000)个字符串S[1~n],每个S[i]有权值val[i],随机等概率造一个由小写字母构成的字符串T,Sum = 所有含有子串T的S[i]的val[i]之积,求Sum的期望值。 广义后缀自动机模板题。 广义后缀自动机 这个题比较特殊的地方在于,它不能打了标记后整个自动机同时沿fail链上传标记,必须边打标记边上传,因为出现多次答案只算一次。那么就有人提出了疑问...原创 2018-08-16 19:25:29 · 415 阅读 · 0 评论 -
NOI 2015品酒大会(后缀数组SA + 单调栈+RMQ求最大/小值)
容易发现,我们只需要求出(最多r)相似(r=0~n-1)的对数,就可以用前缀和算出r相似的对数。最多r相似的统计可以用后缀数组的h数组来统计。将每一对酒分类为r被h[2]卡住了,被h[3]卡住啦。。。。那么就需要求出每一个h[i],最大的区间[a,b]使得h[i]=mini=ab(h[i])h[i] = min_{i=a}^b(h[i])h[i]=mini=ab(h[i])然后被i卡住的对...原创 2019-01-03 15:10:56 · 187 阅读 · 0 评论 -
Winter Camp 2019 Simulation Day5 T1 Matrix(Trie树合并)
有位大佬把n2mn^2mn2m和m2nm^2nm2n打了个拼盘然后拿了90分%%%正解以前完全没意识过。把每一行看做一个字符串加入trie树,然后就可以用做字符串题的方法来做这道题,具体就是先把矩阵的左边界看做是1,求出每个字符串在哪几行出现,那么就可以统计出有多少个行区间包含这个字符串,又每个字符串确定了矩形的长,那么trie树中每个点行区间的个数就是方案数。把左边界右移的时候,(居然)可...原创 2019-01-10 20:24:07 · 241 阅读 · 0 评论 -
HDU 2243 考研路茫茫——单词情结(AC自动机)
输出用%I64d会WA。。。。。矩阵套矩阵实现矩阵等比数列求和#include<cstdio>#include<queue>#include<algorithm>#include<cstring>#define maxn 50#define Maxc 26#define LL long longusing namespace std...原创 2018-12-31 21:19:20 · 204 阅读 · 0 评论 -
字符串的各种算法
之前想写多项式的各种算法,然后被FFT多项式求逆打自闭了。临表涕零,不知所言。就按我学的顺序来吧。manacharmanacharmanachar可求出对于每个点iii,以iii为中心的最长回文串的右端点到i的总字符数lc[i]lc[i]lc[i](即i+lc[i]−1i+lc[i]-1i+lc[i]−1为最长回文串的右端点)。如果在字符串每两个字符间插入一个∗*∗字符,那么也可...原创 2018-12-26 11:00:38 · 500 阅读 · 0 评论 -
【Codeforces710F】String Set Queries (强制在线)AC自动机
这个强制在线AC自动机。。。。AC自动机是不可以修改的。但是可以做到重构,合并O(n)O(n)O(n)那么就开两个AC自动机,sizesizesize分别为n,m(m&lt;n)n,m(m&lt;n)n,m(m<n)那么每次m&gt;Sm&gt;Sm>S时就将自动机合并,每次往第二个自动机加串时就重构。那么合并O(nS)O(\frac nS)O...原创 2019-01-02 09:57:00 · 312 阅读 · 0 评论 -
小明系列故事——女友的考验
终于放寒假了,小明要和女朋友一起去看电影。这天,女朋友想给小明一个考验,在小明正准备出发的时候,女朋友告诉他,她在电影院等他,小明过来的路线必须满足给定的规则: 1、假设小明在的位置是1号点,女朋友在的位置是n号点,则他们之间有n-2个点可以走,小明每次走的时候只能走到比当前所在点编号大的位置; 2、小明来的时候不能按一定的顺序经过某些地方。比如,如果女朋友告诉小明不能经过1 ->...原创 2019-01-02 10:06:01 · 937 阅读 · 0 评论 -
CodeForces 201D - Brand New Problem
状压DP+套路转化DP式将复杂度转化为与n,m中较小的一维上。注意,作死不写哈希而将字符串看做26进制数的做法是错误的,因为这样就把a字母看做前导零了,在数学中可能不碍事,但是在字符串比较中就会直接爆炸。所以:一个字母表达的数字为 ch-'a'+1,用27进制。ACcode:#include<cstdio>#include<cstring>#include<cct...原创 2018-03-03 21:33:45 · 246 阅读 · 0 评论