随笔分类 -  ACM-字符串

摘要:题目链接 题意:求两两后缀的LCP的和 做法一: 很容易想到后缀数组,Height数组表示的是排名相邻两后缀的LCP 但是可以意识到任意两后缀的LCP是他们之间Height的最小值,所以只要计算出每个点的Height作为最小值覆盖到最左和最右的点,那么r[i] - i + 1 i - l[i] + 阅读全文
posted @ 2019-09-13 17:31 Hugh_Locke 阅读(178) 评论(0) 推荐(0) 编辑
摘要:先上模板 int len[maxn << 1],fa[maxn << 1],son[maxn << 1][maxc]; LL num[maxn << 1]; int size,last; void Init(){ size = last = 1; } void insert(char c){ int 阅读全文
posted @ 2019-09-10 22:57 Hugh_Locke 阅读(237) 评论(0) 推荐(0) 编辑
摘要:https://hihocoder.com/login 模拟赛的时候强行迭代dp做的题,事实上是AC自动机的套路题,虽说迭代不用算法比较亲民,但是确实抠细节不太好写,当时也写了有一个小时,如果知道这是一道AC自动机的套路题的话,就好做多了 将N + 1个模式串插入AC自动机之后,如果进入到末尾结点就 阅读全文
posted @ 2019-09-05 21:11 Hugh_Locke 阅读(381) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2778 做法:利用AC自动机建矩阵之后进行N次矩阵乘 关于AC自动机配快速矩阵幂的理解:1.题目限制10个字符串长度最多为10,那么建出的AC自动机的结点数至多为100 2.任意合法字符串必定通过nxt指针在AC自动机的结点之间转移 3.那么我们 阅读全文
posted @ 2019-08-30 21:06 Hugh_Locke 阅读(263) 评论(0) 推荐(0) 编辑
摘要:https://cn.vjudge.net/problem/2040809/origin 题意:在S串中找一个子串,在T串中找一个前缀,求拼起来是回文串的方案种数。 首先S串取出来的串可以分为s1 + s2,T串取出来的前缀为t,其中s1与t拼起来为回文串,s2本身为回文串 所以说对于s2,可以用马 阅读全文
posted @ 2019-08-05 14:42 Hugh_Locke 阅读(245) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.org/problem/P3181 题目要求求出两个两个字符串中相同子串的方案数,那么我们将其拼接起来,去求出拼接后的字符串中含有相同子串的数量。 当然这样做会求出同一个字符串中相同子串的数量,所以我们还需要如法炮制分别求出两个字符串中的答案,然后用总贡献减去他们 阅读全文
posted @ 2019-08-03 21:12 Hugh_Locke 阅读(281) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5845 题意:给定序列,问最多可以分成多少段序列使得每段序列不超过L且异或和不超过X 首先对于区间异或和,很容易想到前缀异或和去优化使其可以在O(1)时间内求出区间异或和,然后我们就可以写出一个n²暴力 #incl 阅读全文
posted @ 2019-08-01 09:27 Hugh_Locke 阅读(360) 评论(0) 推荐(0) 编辑
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=4698 题意:求N个字符串中最长的相同字串的长度,相同的定义是:两个子串长度相同且一个串的全部元素加上一个数就会变成另一个串。 这题的难点在于相同的定义,在这样的定义下一般的字符串匹配算法就不适用了。 阅读全文
posted @ 2019-02-14 16:05 Hugh_Locke 阅读(137) 评论(0) 推荐(0) 编辑
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=2434 打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。经阿狸研究发现,这个打字机是这样工作的: ·输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后) 阅读全文
posted @ 2019-01-18 13:56 Hugh_Locke 阅读(326) 评论(0) 推荐(0) 编辑
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=2938 题意:给出N个01病毒序列,询问是否存在一个无限长的串不存在病毒序列 正常来说,想要寻找一个串是否出现这些01序列可以直接跑AC自动机,这题反向问有没有无限长的不出现,说明在AC自动机上询问的 阅读全文
posted @ 2019-01-17 15:23 Hugh_Locke 阅读(214) 评论(0) 推荐(0) 编辑
摘要:http://codeforces.com/problemset/problem/1051/E 题意:给你一个很大的数字,然后你可以把这个数字拆分成为任意多个部分,要求每一个部分的数字大小要在一个区间内,问有多少种拆分方式。 很容易看出这是一个dp,用dp[i]表示到i之前位置总共的数量,再用l[i 阅读全文
posted @ 2018-11-17 15:44 Hugh_Locke 阅读(265) 评论(0) 推荐(1) 编辑
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字。 他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指 阅读全文
posted @ 2018-10-22 18:59 Hugh_Locke 阅读(174) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3613 每个字符都有一个权值,将一个字符串分成两半,如果某一半是回文串就把所有的字符权值加起来,否则当0来处理,问最大值会是多少。 这题很明显是判断前后缀的回文串然后用O(n)的时间遍历取最大值。 问题在于如何判断 阅读全文
posted @ 2018-08-22 21:26 Hugh_Locke 阅读(244) 评论(0) 推荐(0) 编辑
摘要:lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题 水题 就是用来试试字符串算法的 tri树 map/set Hash 阅读全文
posted @ 2018-08-19 08:57 Hugh_Locke 阅读(226) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示