![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
Thomas_ZQQ@Runespoor
这个作者很懒,什么都没留下…
展开
-
【题解】CCPC-Final 2019 C - Mr. Panda and Typewriter
题目题意给一个打字机,有三种操作:打一个字符花费X的时间复制一段已经打过的子串到剪贴板,花费Y的时间粘贴剪贴板内容到串末尾,剪贴板内容不变,花费Z的时间求打出给定串最短的用时要求复杂度 O(n2)O(n^2)O(n2)题解很容易想到DP,在观察一下这个状态是n2n^2n2的:f[i][j]:表示已经输入了i,当前剪贴板是当前串长度为j的后缀,j=0表示剪贴板为空f[i][j...原创 2020-02-14 10:45:53 · 567 阅读 · 0 评论 -
【算法笔记】AC自动机+可持久化线段树解决大字符集的问题
问题:这里的trie树和普通的不一样,因为串长最多有O(n^2),而不是以前的O(n)。姑且把它叫做广义Trie树这道题目显然是裸的AC自动机,然而字符集很大。这里不能直接map,用一般的均摊AC自动机(求fail的时候用while跳)。这样复杂度错误的要用可持久化线段树维护trans数组下面的代码只是一个思路。以前写这道题的代码找不到了,,,void build(){ hh...原创 2020-02-08 14:53:08 · 607 阅读 · 0 评论 -
【题解】CCPC-final 2019 Problem B - Infimum of Paths
题目链接题意求有向图0道1的字典序最小路径(注意,这里转化成小数值,所以和路径长度毫无关系,末尾可以接无数个0)观察:肯定会有无限循环的情况,但是只会在一个最优的环上走这道题首先要做两个事情删除不能到1的点把1加上0的自环,这样可以把无限和有限放在一起处理有三种方法。其中两种是题解的方法1正着走,贪心的思想,每次走最优的路径。更新合法的点集(注意这里需要去重,否则会指...原创 2020-02-06 12:35:40 · 785 阅读 · 0 评论 -
【题解】2019-2020 ICPC, Asia Jakarta Regional Contest - D. Find String in a Grid
D. Find String in a Grid这是一道好题!方法1:首先考虑如何用后缀数组求一堆串在单个串中的出现次数加分隔符建后缀数组。然后对每个串,在rk数组上求合法区间(即在height数组上用ST表二分)然后计数区间中有多少位置合法这里可以直接把上述方法的思想迁移过来首先枚举分段点,因为我们能做的都是单个串,不能拐弯那我们现在就是要前面的用横着的串匹配,后面的用竖着...原创 2020-02-03 18:51:48 · 260 阅读 · 0 评论 -
【学习小结】回文串相关知识
回文自动机(回文树)回文树的性质和构建yyb功能求串S前缀0~i内本质不同回文串的个数求串S内每一个本质不同回文串出现的次数求串S内回文串的个数(其实就是1和2结合起来)求以下标i结尾的回文串的个数和AC自动机相似回文树每个节点都代表一个回文子串,其fail指向最长回文后缀。并且该后缀也是一个border要知道一个节点(一个位置)结尾的所有回文串,只需要跳完fail但是统...原创 2019-05-06 20:15:44 · 362 阅读 · 2 评论 -
【题解】Codeforces 1063F. String Journey 后缀数组+贪心
题目题解这是一道字符串好题!有几个重要的性质帮助解题:1. 每次只增加一个字符,答案不会变差2. 如果以i开头最优答案为k,则1,…,k - 1,都行3. 用dp[i]表示i开头的最优答案,dp[i + 1] + 1 >= dp[i]所以每次只需要枚举答案k,check当前是否合法。注意check的时候是询问是否有位置j满足1. j >= i + k , lcp(i...原创 2019-02-12 21:38:08 · 181 阅读 · 0 评论 -
【题解】【CF666E】Forensic Examination(后缀自动机,线段树合并)
题解看 yyb的博客翻译:给定一个串S和若干个串Ti每次询问S[pl…pr]在Tl…Tr中出现的最多次数,以及出现次数最多的那个串的编号。**parent树上线段树合并很常规但是有个疑问:这个在trie树上进行一次节点映射,trie上节点被原串覆盖次数是均摊的啊,所以线段树合并复杂度会不会有问题,比如parent树深度子树出现位置特别大需要对线段树合并的复杂度再学习一下****...原创 2019-01-30 22:26:14 · 393 阅读 · 0 评论 -
【题解】codeforces 1065G. Fibonacci Suffix 合并技巧+按位贪心
题目连接题意:给出一个斐波那契序列,F[0] = “0” , F[1] = “1” , F[i] = F[i - 2] + F[i - 1]. 求第k小的后缀的前m位。题解直接按位贪心每次check一个前缀在F[n]中的出现次数。这个可以维护pre,suf , num表示F[i]和当前串的前后缀匹配长度和当前串出现次数长度不够默认可以匹配,用bitset优化合并复杂度O(n * m...原创 2019-02-08 15:21:49 · 434 阅读 · 0 评论 -
【知识小结】后缀自动机
首先是复习好久没有碰过的后缀自动机套路仍然是考虑pnt树,找每个节点的right结合,用线段树合并来维护出现位置,然后就可以进行dp和查询把经典的套路弄熟!与right集合有关的套路1. 分拆字符串,删除一个字符,对本质不同的串的影响7月集训的时侯用来互测的超繁的题这是简化版,相同的还有bc一道题,不挂出来了2. 利用出现位置的性质CF700E Cool Slogans这道题利用...原创 2019-01-28 21:53:58 · 111 阅读 · 0 评论 -
bzoj4820概率dp(kmp +高消)
题面题解思想很重要:最暴力的是p[i]表示AC自动机上每轮经过每个点的概率和(期望次数)所有终止节点的概率之和=1。注意对于1号节点(AC自动机的根),概率要+1,因为一开始从它出发然后我们发现对于所有非终止节点,我们统计每轮经过它们的概率和是没有任何意义的,我们可以把这些点放在一起考虑所以就有了题解中的做法只考虑在任一非终止节点后+串A,提前出现串B的概率注意:概率高消eps越小...原创 2018-10-22 17:03:37 · 179 阅读 · 0 评论 -
bzoj 5439 字符串
题面这里写链接内容 题解这里写链接内容 很详细我的总结在于这道题给我的思维启发 看到这道题一开始完全没有思路。循环节怎么统计,DP?看到题解才知道原来可以剪枝暴力。 一个很重要的经验,看到不可做的题,可以先从最简单的情况推出性质,或许可以转化为很简单的模型。trick,3^m枚举写法 不用dfs或者状压枚举 rep(l,2,8){ if ( ans ...原创 2018-09-16 08:21:52 · 370 阅读 · 0 评论 -
[后缀树 & 虚树(模板)] BZOJ3879. SvT
题目:这里写链接内容 题解:两个后缀的LCP是后缀树上对应节点的LCA多组询问就用虚树后缀树:将串反过来,跑后缀自动机,pnt树是原串后缀树。虚树:一份很完整的讲解 代码挺模板的#include<bits/stdc++.h>using namespace std;#define maxn 1000020#define rep(i,l,r) for(regist...原创 2018-08-18 23:05:00 · 331 阅读 · 0 评论 -
AC自动机模板 (模板题 bzoj 4327)
题目:这里写链接内容 可持久化版本待续//AC自动机//功能,一堆串和一个串进行匹配,看哪些位置可以被匹配。//fail指针。当前串最长的后缀等于某个节点所表示的前缀。//fail树。fail指针所形成的树。fail树上的所有祖先都是该节点的子串//常见套路://记录节点状态(当前匹配到哪个节点),DP,快速幂优化//利用所有后缀的前缀是所有子串的性质//直接利用fail树和t...原创 2018-08-07 18:54:31 · 247 阅读 · 0 评论 -
kmp模板
//kmp的模板//下标从1开始//推一推,fail数组表示最长的后缀等于前缀,向后扩展时利用前面已有的性质#include<bits/stdc++.h>using namespace std;#define maxn 1000020#define rep(i,l,r) for(register int i = l ; i <= r ; i++)#define re...原创 2018-08-07 18:04:58 · 210 阅读 · 0 评论 -
bzoj4516 后缀数组/后缀自动机
题意(后缀数组模板题) 给你一个字符串,问该字符串的每一个前缀中分别有多少个不同的子串。 n&amp;lt;=100000这道题目最简单粗暴的方法是建立sam,然后每个点用一个map保存,统计答案就用len[i]-len[fa[i]]即可。。考虑后缀数组。将整个数组反过来,那么每次就相当于查询后缀[i,n]中有多少本质不同的子串。那么就可以建出后缀数组,然后新加入一个后缀[p],那么首先需要...原创 2018-07-20 19:04:28 · 178 阅读 · 0 评论 -
4180: 字符串计数 后缀自动机+最小表示法+倍增floyd
4180: 字符串计数Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 349 Solved: 152[Submit][Status][Discuss]DescriptionSD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999。他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', '...原创 2018-07-06 10:35:13 · 209 阅读 · 0 评论 -
后缀自动机模板 (模板题LOJ#6031. 「雅礼集训 2017 Day1」字符串 后缀自动机+数据分治)
题目:https://loj.ac/problem/6031题解:对k进行分治。 k小时用莫队维护处[a,b]中每个区间贡献次数c[l][r], 再暴力枚举区间统计答案。 k大时询问次数少,所以对于每个询问串预处理匹配,再暴力枚举【a,b】统计答案 相当于在pnt树上倍增跳找合适长度的rig...原创 2018-07-05 22:07:26 · 256 阅读 · 0 评论 -
bzoj1559: [JSOI2009]密码 AC自动机+状压DP
题目https://www.lydsy.com/JudgeOnline/problem.php?id=1559 题解https://www.cnblogs.com/LadyLex/p/7514403.html 关键:首先不要看错题意,是自己随便构造串包含给定串即可,不是用给定串拼接(所以拼接的方案数怎么做啊) AC自动机疯狂打错,我在干什么? ...原创 2018-07-12 11:00:52 · 207 阅读 · 0 评论