Codeforces 528D Fuzzy Search(FFT)】的更多相关文章

题目 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…
传送门 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​匹配. 题目…
[CF528D]Fuzzy Search(FFT) 题面 给定两个只含有\(A,T,G,C\)的\(DNA\)序列 定义一个字符\(c\)可以被匹配为:它对齐的字符,在距离\(K\)以内,存在一个字符\(c\),问给定串\(T\)在\(S\)中出现了几次. \(|S|,|T|,K<=200000\) 题解 字符集很小,可以分开进行\(FFT\). 现在的匹配的定义为距离当前位置\(K\)以内的所有字符中是否含有这个字符,如果有设置为\(1\),没有就是\(0\),把字符分开做\(FFT\)然后相…
原文链接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…
题目链接:https://cn.vjudge.net/contest/281959#problem/B 题目大意:给你n,m,k.然后输入两个字符串,n代表第一个字符串s1,m代表第二个字符串s2,然后问你第二个字符串在第一个字符串能匹配的次数(选定第一个字符串的位置之后,任意s2中一个字符串,都能在s1对应的位置左右k个都能找到相同的字符). 具体思路:和 这一篇的思路基本使用一样的. FFT(Rock Paper Scissors Gym - 101667H) AC代码: #include<…
链接:http://codeforces.com/problemset/problem/528/D 正解:$FFT$. 很多字符串匹配的问题都可以用$FFT$来实现. 这道题是要求在左边和右边$k$个字符内有字符和模式串匹配,那么用$kmp$是显然不行的.我们考虑把模式串翻转一下.因为只有4个字符,所以每个字符我们分开考虑.然后对于母串,如果在给定范围内有当前字符,这个位置就赋值为1:对于模式串,如果当前位置是当前字符,这个位置就赋为1.然后我们对这两个多项式做一下卷积,记录$Ans$,最后4种…
题目链接 \(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)\).…
题意:求母串中可以匹配模式串的子串的个数,但是每一位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\)之…
题链: 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满足从该位置开始的长…
Codeforces 题面传送门 & 洛谷题面传送门 好久没刷过 FFT/NTT 的题了,写篇题解罢( 首先考虑什么样的集合 \(T\) 符合条件.我们考察一个 \(x\in S\),根据题意它能够表示成若干个 \(\in T\) 的数之和,这样一来我们可以分出两种情况,如果 \(x\) 本来就属于 \(T\),那么 \(x\) 自然就符合条件,这种情况我们暂且忽略不管.否则根据题设,必然存在一个数列 \(b_1,b_2,\cdots,b_m\),满足 \(m\ge 2,\forall i\in…