bzoj4641 基因改造 KMP / hash】的更多相关文章

依稀记得,$NOIP$之前的我是如此的弱小.... 完全不会$KMP$的写法,只会暴力$hash$.... 大体思路为把一个串的哈希值拆成$26$个字母的位权 即$hash(S) = \sum\limits_{a} a * \sum w^i * [s[i] == a]$ 通过记录每个字母第一次出现的位置,用$26$的时间来确定$f$是什么 然后通过确定的$f$计算出$f$是正确的时候的$hash$值,和原串的$hash$值比较 复杂度$O(26n)$ 自然取模.... #include <cst…
这道题以前好像模拟的时候做过,当时不会做,于是用hash水过去了.. 正解是KMP,还是用当前字符与上一次相同字符位置的距离表示数组,于是数值相等时就代表相似.第一次出现用INF代替. 然后要匹配有多少个.暴力匹配的话是:匹配到$s_i,t_{j+1}$时,若$s_i=t_{j+1}$或者是$s_i>j$且$t_{j+1}>j$.这表示距离相同或者第一次出现时的匹配. 注意第一次出现的判断:因为从$s$串某一处开始,后面有的字符的距离值不是INF但与之相聚$d$的字符却不在匹配串范围内. 这就…
[BZOJ4641]基因改造 Description "人类智慧的冰峰,只有萌萌哒的我寂寞地守望." --TB TB正走在改造人类智慧基因的路上.TB发现人类智慧基因一点也不萌萌哒,导致人类普遍智商过低,为了拯救低智商人群,博爱的TB开始改造人类智慧基因.人类智慧DNA由C种人类智慧脱氧核苷酸构成(这是一种十分特殊的DNA).TB智慧DNA片段T长度为M,她可以把另一段长度为M的人类智慧DNA片段S改造成T.改造过程中,TB可以充分发挥智慧,将任意两种人类智慧脱氧核苷酸交换(比如对于片…
题意 给出两个字符串\(s\)和\(t\),设\(S\)为\(s\)的任意一个非空前缀,\(T\)为\(t\)的任意一个非空前缀,问\(S+T\)有多少种不同的可能. Solution 看了一圈,感觉好像就我一个人写的\(kmp+hash+\)二分. 直接算好像不是很好算?先容斥一下,不同\(=\)总方案\(-\)相同. 显然总方案为两个字符串的长度的乘积,考虑相同的情况怎么算. 相同即两组\(S\)和\(T\)不同,但\(S+T\)本质相同的情况. 这个东西怎么算呢.... (感觉看图会好理解…
题目描述 如果两个长度相等的字符串,如果存在一种字符的一一映射,使得第一个字符串的所有字符经过映射后与第二个字符串相同,那么就称它们“匹配”.现在给出两个串,求第一个字符串所有长度等于第二个字符串的长度的子串中与第二个字符串“匹配”的所有子串的位置. 输入 输入文件的第一行包含两个正整数case和C,分别表示数据组数和人类智慧脱氧核苷酸的种数. 接下来3*case行,每三行表示一组数据: 第一行一个正整数N和M,表示人类智慧DNA片段S和TB智慧DNA片段T的长度. 第二行N个正整数,表示人类智…
[BZOJ3942][Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they have plenty of material to read while waiting around in the barn during milking sessions. Unfortunately, the…
Description Every morning when they are milked, the Farmer John's cows form a rectangular grid that is R (1 <= R <= 10,000) rows by C (1 <= C <= 75) columns. As we all know, Farmer John is quite the expert on cow behavior, and is currently wri…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5782 [题目大意] 给出两个字符串,判断他们每一个前缀是否循环同构,循环同构的意思就是,字符串首位相接拼成一个环,两个环通过旋转可以相等. [题解] 这道题用到了一个神奇的结论,如果S字符串和T字符串循环同构,那么必有S=u+v,T=v+u,而且u和v必有一个是最长匹配. 那么根据这个结论,我们可以用KMP算法在T中找S的最长前缀,也就是每次匹配到i时候的j.那么对于T的前缀和S的后缀,我们直接…
题意:给你2个串,让你判断2个字符串的前缀是否满足首尾连接形成的环是不是一样的. 思路:我们需要提前知道的是满足条件的前缀一定满足 strA = str1 + str2, strB = str2 + str1.然后我们先求出其中的一个的KMP,然后去匹配,那么我们匹配过程中一定会有一个公共长度j,那么我们利用好j这一段再加上判断剩下的部分是不是相等的就好了,那么这一段就可以相当于str2,然后我们再用带有顺序的hash技术,将其他的映射出来就好了,然后用的时候直接乘上当前值的进制值就好了,就是有…
恩,其实大家都没有报零,反正我是蒟蒻 为了纪念我第一次打过哈希,特此写一篇题解 题目描述 从前有一个的小矩阵,矩阵的每个元素是一个字母(区分大小写),突然有一天它发生了 变异,覆盖了整个二维空间,即不停自我复制产生相同的矩阵然后无隙放置.现在二维空间 已经被它占领了,但你只被告知了大小为R*C 空间的内容(可能包含不完整的原矩阵),为了 将它恢复原状,你需要找到满足条件的面积最小的原矩阵. 奇怪的是,同时有 T 个二维空间发生了变异,你需要尽快解决这些变异. 输入格式 第一行为一个整数T,表示二…