●codeforces 528D Fuzzy Search】的更多相关文章

链接:http://codeforces.com/problemset/problem/528/D 正解:$FFT$. 很多字符串匹配的问题都可以用$FFT$来实现. 这道题是要求在左边和右边$k$个字符内有字符和模式串匹配,那么用$kmp$是显然不行的.我们考虑把模式串翻转一下.因为只有4个字符,所以每个字符我们分开考虑.然后对于母串,如果在给定范围内有当前字符,这个位置就赋值为1:对于模式串,如果当前位置是当前字符,这个位置就赋为1.然后我们对这两个多项式做一下卷积,记录$Ans$,最后4种…
原文链接http://www.cnblogs.com/zhouzhendong/p/8782849.html 题目传送门 - CodeForces 528D 题意 给你两个串$A,B(|A|\geq|B|)$,以及一个$k$. 其中$A_i$与$B_j$匹配的条件是$A_{i-k\dots i+k}$中至少有一个与$B_j$相同. 问$B$能在$A$中匹配多少次. 字符集:$\{'A','C','G','T'\}$. $|B|\leq|A|\leq 2\times 10^5,k\leq 2\ti…
题目 Source http://codeforces.com/problemset/problem/528/D Description Leonid works for a small and promising start-up that works on decoding the human genome. His duties include solving complex problems of finding certain patterns in long strings cons…
题链: http://codeforces.com/problemset/problem/528/D 题解: FFT 先解释一下题意: 给出两个字符串(只含'A','T','C','G'四种字符),一个为文本串T(长度为n),一个为模式串S(长度为m). 要用模式串去匹配文本串. 同时给出一个正整数k,表示允许的匹配误差范围为k,即: 如果对于T[i]和S[j],只要在T[i-k-i+k]范围中存在一个字符与S[j]相同,那么T[i]和S[j]就匹配. 求出T中有多少个位置i满足从该位置开始的长…
题目链接 \(Descripiton\) 给出文本串S和模式串T和k,S,T为DNA序列(只含\(A,T,G,C\)).对于S中的每个位置\(i\),只要\(s[i-k]\sim s[i+k]\)中有一个位置匹配了字符\(c\),那么就认为\(i\)可以匹配\(c\).求S中有多少位置匹配了T. \(Solution\) 题意一直不很明白..(→_→这就是你颓了一下午一晚上写了一道题的理由?) 匹配当然是连续的,即若位置\(i\)匹配,则\(S[i+j]=T[j]\ (0\leq j<m)\).…
传送门 fftfftfft好题. 题意简述:给两个字符串s,ts,ts,t,问ttt在sss中出现了几次,字符串只由A,T,C,GA,T,C,GA,T,C,G构成. 两个字符匹配的定义: 当si−k,si−k+1,...,si+k−1,si+ks_{i-k},s_{i-k+1},...,s_{i+k-1},s_{i+k}si−k​,si−k+1​,...,si+k−1​,si+k​中存在至少一个字符使得sj=tls_j=t_lsj​=tl​时,我们称sis_isi​与tlt_ltl​匹配. 题目…
题意:求母串中可以匹配模式串的子串的个数,但是每一位i的字符可以左右偏移k个位置. 分析:类似于 UVALive -4671. 用FFT求出每个字符成功匹配的个数.因为字符可以偏移k个单位,先用尺取法处理出每个位置能够取到的字符.设模式串长度为m. 令\(C(m-1+k) = \sum_{i=0}^{m-1}A_{i+k}*B(m-i-1)\). 反转模式串B, 对每个字符c,若该位上能够取到c,则多项式该位取1,否则为0,FFT求卷积.并记录[m-1,n-1]每个位置4次计算的系数\(C\)之…
CF 528D. Fuzzy Search NTT 题目大意 给出文本串S和模式串T和k,S,T为DNA序列(只含ATGC).对于S中的每个位置\(i\),只要中[i-k,i+k]有一个位置匹配了字符\(i\),那么就认为\(i\)可以匹配.求S中有多少位置匹配了T. 思路 一共有四个字母,我们分别计算每个字母是否可行,其他不管. 最后四个都满足的位置就是一个合法位置(指的是初始位置). 设g[i]表示S_i位置是否是枚举的字母,f[i]表示M_i是否是是枚举的字母. 他们满足条件只需要右斜对角…
http://codeforces.com/problemset/problem/528/D (题目链接) 题意 给定母串和模式串,字符集大小为${4}$,给定${k}$,模式串在某个位置匹配当且仅当任意位置模式串的这个字符所对应的母串的位置的左右${k}$个字符之内有一个与它相同的,求匹配次数. Solution 毛爷爷论文题.我们将${4}$种不同的字符分开计算贡献.每一次计算,先预处理出母串种的每个位置能否匹配,对于每个能够匹配的位置,我们将它赋为${1}$,不能匹配则赋为${0}$,将其…
CF528D. Fuzzy Search 题意:DNA序列,在母串s中匹配模式串t,对于s中每个位置i,只要s[i-k]到s[i+k]中有c就认为匹配了c.求有多少个位置匹配了t 预处理\(f[i][j]\)表示位置i可以匹配字符j 分别考虑每一个字符c,对s的每个位置i求出用\(s[i,i+m-1]\)匹配t,这个字符匹配了几次 用\(a_i=[s的位置i匹配c],\ b_i=[t_i=c]\) 那么c的匹配次数就是\(c_j=\sum\limits_{i=0}^{m-1}a_{j+i}b_i…