![](https://img-blog.csdnimg.cn/2020081509380623.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
字符串
文章平均质量分 94
字符串类习题总结
Gene_INNOCENT
Wait for the sunrise!
展开
-
后缀数组算法概述及习题
后缀数组概述一、适用问题后缀数组的题目非常灵活多变,主要涉及字符串所有后缀的字典序比较以及最长公共前缀。本文主要介绍后缀数组的一些经典应用,虽然是经典应用,但是其思想应该属于后缀数组类问题的本质思想。二、算法介绍求解后缀数组的算法主要有倍增法、DC3DC3DC3 算法,具体的算法实现此处就略过了,想要具体了解的话可以自行 googlegooglegoogle 搜索。下文给出的后缀数组模...原创 2019-10-24 21:12:21 · 387 阅读 · 0 评论 -
AC自动机算法概述及习题
AC自动机习题1. Censored! 题意: 用 nnn 个基本字符组成一个长度为 mmm 的字符串,要求字符串中不能出现给定的 ppp 个非法串中任何一个,输出方案总数。(1≤n,m≤50,0≤p≤10)(1\leq n,m\leq 50,0\leq p\leq 10)(1≤n,m≤50,0≤p≤10)思路: 数据范围比较小,因此不难往 dpdpdp 上进行思考。又因为有多个非法串,考虑...原创 2019-09-25 21:33:11 · 1501 阅读 · 0 评论 -
【Codeforces Round #291 (Div. 2) C】Watto and Mechanism【Trie树、Hash】
题意: 给出n个串,m组询问。每组询问均为一个字符串,询问在初始n个串中是否存在一个串与该询问串恰好只有一个位置不相同。输出YES or NO。 Hash思路: 首先先讲讲Hash的算法,利用bkdr算法将每个字符串hash成一个数值,hash函数如下:hash: abccachash[1] = 0hash[6] = 0*131^5+1*131^4+...原创 2019-02-16 12:55:54 · 194 阅读 · 0 评论 -
HDU - 1247 (字典树水题)
题意: 给很多单词,问你有没有一个单词是由其它两个单词拼接而成,如果有就输出。思路: 因为本来就是字典序输入,所以只要按照字典序来判断然后输出就行了。 在建树的时候,对每一个单词的结尾进行标记。 然后对输入的单词一一判定,将单词放到树里面跑,如果跑到某一个点被标记过,则将这个点之后的字符串截取下来,在树中搜索这个单词是否出现过。大坑点: 题目不难,但是题目很坑。 ...原创 2018-05-20 17:21:00 · 429 阅读 · 1 评论 -
【Nowcoder - 5670 B Graph】2020 牛客暑期多校训练营(第五场)【最小异或生成树、Boruvka 思想】
题意给定一颗 nnn 个点的树,每条边的权重为 wiw_iwi。(2≤n≤105,0≤wi<230)(2\leq n\leq 10^5,0\leq w_i< 2^{30})(2≤n≤105,0≤wi<230)可以任意删除一些边或者增加一些边,但是在删增过程中必须保证图连通并且任意一个环的异或和为 000。在此基础上,求最小生成树。题目链接:linklinklink思路观察题目要求,删增过程中保证图连通且任意一个环的异或和为 000,所以其实 (u,v)(u,v)(u,v)原创 2020-08-07 10:42:42 · 329 阅读 · 0 评论 -
01串匹配问题 —— Binary Strings【Gym - 101845B】
题意: 给定两个01串,将第一个串通过两种操作变成第二个串。 操作一:将第一个串的最后一个字母移到最前面。 操作二:将相邻的两个字母进行反转,0反转为1, 1反转为0。 问将第一个串转变为第二个串,最少需要进行多少次操作二,输出最少的操作二的操作数,如果不能将第一个串转变为第二个串,则输出 -1。 思路: 首先,可以看到操作一是将第一个串的...原创 2018-08-20 21:55:31 · 1172 阅读 · 0 评论 -
【扩展KMP】【HDU 4333】Revolving Digits
题意: 给定一个字符串,然后将字符串最后的字母不断移动到字符串的首字母位置,需要求出在这个移动的过程中,生成的字符串比原串字典序大、相等、小的所有字符串个数。移动过程中,相同的字符串不重复计算。 思路: 由于是比较字典序,因此需要进行前缀比较。自然地想到要使用扩展kmp知识,我们这里先大概回忆一下扩展kmp知识。 next [ i ] : 模...原创 2018-11-06 18:30:24 · 183 阅读 · 0 评论 -
【CodeForces - 471D 】【构造差分kmp】MUH and Cube Walls
题意: 给你一个数组A,再给你一个数组B,我们可以任意将数组B整体增加或者减少值X(整数),我们可以进行修改值的操作无限次,每次我们要在数组A中找寻有几段和数组B完全匹配的子段。 思路: 可以发现由于可以将这个区间的数整体增加或减少一个数,因此该题匹配的重点不再是对于某个点的匹配,而是相邻点之间的差,因此我们需要维护一个差分数组。 让差分数组进行匹...原创 2018-11-06 18:41:46 · 240 阅读 · 0 评论