Fuzzy Search】的更多相关文章

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…
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是否是是枚举的字母. 他们满足条件只需要右斜对角…
D. Fuzzy Search time limit per test:3 seconds memory limit per test:256 megabytes input:standard input output:standard output Leonid works for a small and promising start-up that works on decoding the human genome. His duties include solving complex…
[CF528D]Fuzzy Search(FFT) 题面 给定两个只含有\(A,T,G,C\)的\(DNA\)序列 定义一个字符\(c\)可以被匹配为:它对齐的字符,在距离\(K\)以内,存在一个字符\(c\),问给定串\(T\)在\(S\)中出现了几次. \(|S|,|T|,K<=200000\) 题解 字符集很小,可以分开进行\(FFT\). 现在的匹配的定义为距离当前位置\(K\)以内的所有字符中是否含有这个字符,如果有设置为\(1\),没有就是\(0\),把字符分开做\(FFT\)然后相…
在Umbraco examine search项目开发中,有一个需求, 就是intercom 和 intercoms需要返回同样的结果 也就是说 搜索intercom 时, 能返回包含intercom和intercoms的结果 搜索intercoms时,能返回包含intercom和intercoms的结果 在网上搜索了一下,发现需要使用Fuzzy Search 使用Fuzzy Search 又有两种方式: 一种是IExamineValue, 因为SearchTerm.Fuzzy(0.1f) 返回…
Fuzzy Search 给你文本串 S 和模式串 T,求 S 的每个位置是否能模糊匹配上 T. 这里的模糊匹配指的是把 T 放到 S 相应位置上之后,T 中每个字符所在位置附近 k 个之内的位置上的 S 的字符至少有一个与之相同. 1 ≤ |T| ≤ |S| ≤ 200 000, 0 ≤ k ≤ 200 000.字符串是基因序列. 题解 由于字符集很小,所以对每种字符分别处理. 对 T 每个位置赋值为它是否等于这个字符.对 S 的每个位置前后找找有没有这种字符即可. 然后卷积看看匹配了多少个位…
Fuzzy Search 题意: 给定一个模式串和目标串按下图方式匹配,错开位置不多于k 解题思路: 总共只有\(A C G T\)四个字符,那么我们可以按照各个字符进行匹配,比如按照\(A\)进行匹配时,当\(k=1\)时,我们将目标串 \(ACAT\)化作 \(1~0~1~0\) 模式串 \(AGCAATTCAT\)化作 \(1~1~1~1~1~1~0~1~1~1\) 同样是反置目标串 可以得到以x为匹配终点的位置的匹配函数\(p(X)=\sum_{i+j=x}A(i)B(j)\) 如此进行…
链接:http://codeforces.com/problemset/problem/528/D 正解:$FFT$. 很多字符串匹配的问题都可以用$FFT$来实现. 这道题是要求在左边和右边$k$个字符内有字符和模式串匹配,那么用$kmp$是显然不行的.我们考虑把模式串翻转一下.因为只有4个字符,所以每个字符我们分开考虑.然后对于母串,如果在给定范围内有当前字符,这个位置就赋值为1:对于模式串,如果当前位置是当前字符,这个位置就赋为1.然后我们对这两个多项式做一下卷积,记录$Ans$,最后4种…
题目 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满足从该位置开始的长…