KMP与匹配
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
CODEFORCES 25E Test
题意三个字符串,找一个字符串(它的子串含有以上三个字符串)使它的长度最短,输出此字符串的长度。题解直接KMP两个匹配,拼接即可。。。先枚举排列,取最小值。。*常数巨大的丑陋代码# include <stdio.h># include <stdlib.h># include <iostream># include <string.h># include <algorithm>using na原创 2017-07-24 21:28:17 · 311 阅读 · 0 评论 -
[POI2010]CHO-Hamsters
KMP暴力求出next数组后 实际上是一个最短路问题,floyed搞一搞 然而会TLE 矩阵优化一下即可(倍增floyed) KMP在弱数据下可以AC。。正解请看其他人博客# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># defi原创 2017-12-12 19:31:29 · 344 阅读 · 0 评论 -
Bzoj3670: [Noi2014]动物园
题面传送门Sol这是一道阅读理解题,读了好久才明白意思。。。 首先可以想到处理出next数组,每次的位置i跳next跳到长度小于i的一半位置,然后继续跳到零统计此时跳的次数就是答案 那么暴力就是O(n2)O(n^2) 让我们一起膜拜yyb大佬的倍增跳next那么优化就是在求next的时候再开一个指针,每次强制跳到i的一半的位置。。。 再开数组cnt,每次由nex原创 2018-01-18 14:09:05 · 217 阅读 · 0 评论 -
Bzoj1009: [HNOI2008]GT考试
题面传送门Sol设f[i][j]f[i][j]表示到第ii个数,最后jj个为不吉利数字的前缀的方案数 于是就可以写一个KMPKMP套暴力DPDP跳nextnext转移# include # define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using na原创 2018-01-19 17:36:41 · 226 阅读 · 0 评论 -
CF528D Fuzzy Search
题意有两个基因串SSS和TTT,他们只包含AGCTAGCTAGCT四种字符。 现在你要找出TTT在SSS中出现了几次。 有一个门限值k≥0k≥0k≥0 只要T[i]T[i]T[i]和S[j−k]S[j−k]S[j-k]到S[j+k]S[j+k]S[j+k]有相同的,就视为匹配 (1≤|T|≤|S|≤200000,0≤k≤200000)(1≤|T|≤|S|≤200000,0≤k≤200...原创 2018-05-31 12:27:04 · 594 阅读 · 0 评论 -
Bzoj4259: 残缺的字符串
题面没有权限号的我当然选择luoguSol假设没有通配符 那么把TTT翻转 设f[i]=∑j+k=i[S[k]==T[j]]f[i]=∑j+k=i[S[k]==T[j]]f[i]=\sum_{j+k=i}[S[k]==T[j]] 如果f[i]f[i]f[i]为000则iii之前的一一匹配 那么可以给每个字符一个权值 重新定义f[i]=∑j+k=i(S[k]−T[j])2f...原创 2018-05-31 12:26:58 · 221 阅读 · 0 评论 -
BZOJ5372: PKUSC2018神仙的游戏
传送门Sol自己还是太 naivenaivenaive 了,上来就构造多项式和通配符直接匹配,然后遇到 borderborderborder 相交的时候就 gggggg 了神仙的游戏蒟蒻还是玩不来一个小小的性质:存在长度为 lenlenlen 的 borderborderborder 的充要条件是 ∀i,si=sn−len+i\forall i,s_i=s_{n-len+i}∀i,si...原创 2018-12-01 22:44:10 · 231 阅读 · 0 评论 -
CF954I Yet Another String Matching Problem
传送门Sol考虑如何计算两个等长串的距离相当于两个匹配的字符之间连边,同一个连通块内可以互相转化,答案就是并查集合并的次数本题的字符集大小只有 666,那么考虑枚举两种字符匹配连边匹配就是一个非常套路的反转 +++ FFTFFTFFT 了# include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;...原创 2018-12-13 16:57:02 · 374 阅读 · 0 评论 -
UOJ#172. 【WC2016】论战捆竹竿
传送门首先这个题目显然就是先求出所有的 borderborderborder,问题转化成一个可行性背包的问题一个方法就是同余类最短路,裸跑 303030 分,加优化 505050 分首先有个性质borderborderborder 分成的等差数列的个数不超过 logloglog和回文树的性质的证明类似瞎画图一下就行了我们注意到可以一个一个等差数列的更新最短路要做到这个,必须能从之前的...原创 2019-01-15 09:22:52 · 431 阅读 · 0 评论