字符串专题
Nicoleeeee
这个作者很懒,什么都没留下…
展开
-
LibreOJ #6583. 「ICPC World Finals 2019」何以伊名始 AC自动机+fail树
题意给你一棵树,NNN个节点,每个节点有一个字母,给出Q个询问,询问有多少个节点从下到上能够跟询问串匹配N≤106N\leq 10^6N≤106分析把询问串和树并在一起,然后建立fail树,siz从深度大到深度小合并,询问就询问fail树的某个点的子树和就好了代码#include <bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);++i)#define dep(i,a,b) for(int i=(a);i>原创 2020-07-19 19:49:03 · 294 阅读 · 5 评论 -
2020牛客暑期多校训练营(第一场) B-Suffix Array 后缀数组
题目描述分析发现每个后缀,只有第一个a和第一个b的位置可能是0,其他都是可以预处理出来的就是比较每个后缀0X0Y的串。直接用后缀数组搞就好了代码#include <bits/stdc++.h>#define rep(i,a,b) for(int i=(a);i<=(b);++i)#define dep(i,a,b) for(int i=(a);i>=(b);--i)#define pii pair<int,int>#define PB push_bac原创 2020-07-17 15:26:42 · 181 阅读 · 0 评论 -
P4590 [TJOI2018]游园会 dp套dp+lcs
题目描述有两个串,一个模式串,长度为K,一个匹配串(需要自己去凑),长度N,满足以下条件:1.两个串只含“N”、“O”、“I”三种字符2.匹配串不能出现子串“NOI”对于每种匹配串和模式串的最长公共子序列长度 假设为s,求每个s对应多少种不同的匹配串1≤K≤15,1≤N≤10001\leq K \leq 15,1\leq N \leq 10001≤K≤15,1≤N≤1000题解首先我们可以很容易想到一个dp方程,对于匹配串匹配到第i位,对应模式串现在的匹配情况为j,而且NOI在末尾出现的情况为原创 2020-07-11 12:20:08 · 182 阅读 · 0 评论 -
bzoj1398: Vijos1382寻找主人 Necklace 最小表示法
题意判断两个串是否循环同构。分析用最小表示法,简单地写一写首先定义三个值,i,j,k分别是两个头和当前扫到的长度如果相等就k++,不相等就i+=k+1,或者j+=k+1(大的加)然后还有可能i=j的时候要手动错开最后返回小的指针(也就是在串里面的指针就好了)代码#include <bits/stdc++.h>using namespace std;const in...原创 2019-11-18 19:29:41 · 133 阅读 · 0 评论