字符串
文章平均质量分 61
samjia2000
I swear...
We are INFINITE.
展开
-
【GDOI2013模拟4】贴瓷砖
题目大意 给出nn个模式串和一个串SS,用这nn个模式串尽量多的覆盖SS,模式串之间可以重叠,求出最少有多少个位置没有被覆盖。解法 这题有许多解法,下面列举两种: 1. 将所有模式串和要匹配的串SS反过来,然后做一次SASA(后缀数组),然后,肆意恶搞。 2. 对SS做SASA,然后对于每一个匹配串都查找一下它在SS中可能的位置,标记一下,然后,肆意恶搞。我想讲的解法 我想讲的解法是A原创 2015-08-17 20:22:06 · 638 阅读 · 2 评论 -
浅谈AC自动机
以前我觉得AC自动机很高大尚,然而并不是这样的,其实很简单。我们首先来复习一下kmpkmp和TrieTrie。KMP 一种由Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt(V.R.Pratt)三人设计的线性时间字符串匹配算法。这个算法不用计算变迁函数δ,匹配时间为Θ(n),只用到辅助函数π[1,m],它是在Θ(m)时间内,根据模式预先计算出来的。数组π使得我们可原创 2015-08-17 19:54:29 · 737 阅读 · 0 评论 -
Hackerrank Sequential Prefix Function
题目链接:https://www.hackerrank.com/contests/w22/challenges/sequential-prefix-function 这竟然是一道水题,当时打比赛时竟然没有好好看题。。。悲哀。。。题目大意有两种操作,分别是在字符串末尾加上一个字符或者删掉字符串的末尾的字符,要求动态维护kmp。 n≤2∗105n\le 2*10^5解法1首先可以建出一棵AC自动机,原创 2016-08-17 17:33:15 · 628 阅读 · 3 评论 -
codeforces 906E Reverses
Description给你两个串s和t,其中t是由s中选择若干个不相交的区间翻转得到的,现在要求求出最少的翻转次数以及给出方案。 1≤|s|=|t|≤5000001\le |s|=|t|\le 500000Solution先将s和t串合并成一个新的串a,其中若i为奇数,那么a[i]=s[(i+1)/2]否则a[i]=t[i/2] 然后问题就变成了将a分解成最少的长度为偶数的回文串,跟将字符串分解原创 2017-12-29 09:12:59 · 1154 阅读 · 0 评论