随笔分类 -  字符串相关

摘要:Description 设计一种数据结构,支持给指定点插入元素并覆盖先前的元素、查询某一点的排名、输出从任意排名之后的10名。 Solution 采用Splay实现 关于读入的字符串,我们可以哈希然后将哈希值丢到map里,这样就可以给每一个字符串一个编号,方便在Splay上操作。 关于插入和删除以及 阅读全文
posted @ 2019-07-31 20:26 AD_shl 阅读(182) 评论(0) 推荐(0)
摘要:Description 给定若干模式串组成的文本串,求每个模式串出现的次数。 Solution 由于模式串可能重复,所以直接按照AC自动机的模板会出错,所以我们定义一个same数组,end数组只记录最早的编号,每次如果要覆盖,便把令该节点的same值为这个位置上的end的值,查询一遍,输出答案就输出 阅读全文
posted @ 2019-07-29 11:06 AD_shl 阅读(154) 评论(0) 推荐(0)
摘要:Description 给定若干模式串,求是否存在一个无限长的文本串使得所有模式串均不能在此文本串中匹配。 Solution 这是一道AC自动机的变式,我们首先将这些模式串在Trie树上存储,以便AC自动机的操作。 我们这样思考:在我们存储Trie时,我们将每一个串的末尾标记一下,表示这是一个模式串 阅读全文
posted @ 2019-07-29 08:59 AD_shl 阅读(183) 评论(0) 推荐(0)
摘要:Description 给定n个模式串和m个文本串,对于每个文本串,求出这个文本串在模式串中最大匹配长度。 Solution 我们采用AC自动机求解。 首先构建自动机,在Trie上保存模式串,之后通过bfs求出失配数组(AC自动机的模板操作),之后处理匹配操作。 这里的一个难点就是我们需要记录最大的 阅读全文
posted @ 2019-07-27 15:53 AD_shl 阅读(226) 评论(0) 推荐(0)
摘要:一道别样的区间dp,重点在于对字符串的处理。 读完题,我们很自然的想到区间dp,定义f[i][j]表示从折叠i~j的部分的最小长度,那么答案为f[1][n]。 区间dp的转移一般而言都是一样的,在区间中枚举一个位置,使这一个大区间分成两个小区间。因此状态转移方程我们不在赘述。 我们重点探讨一下对于字 阅读全文
posted @ 2019-04-25 20:58 AD_shl 阅读(174) 评论(0) 推荐(0)
摘要:hash的入门题,通过hash我们可以在O(1)的时间里判断一个字符串的任意子串是否相等,恰好符合本题题意。 设计hash函数f[i]存储字符串s第1~i的子串的哈希值。显然存在f[i]=f[i-1]*131+(s[i]-'a'+1). 有了f数组,就可以求出任意子串的哈希值,因此我们就可以判断任意 阅读全文
posted @ 2019-04-05 20:32 AD_shl 阅读(302) 评论(0) 推荐(0)