字符串
HumveeA6
这个作者很懒,什么都没留下…
展开
-
(模板)字符串hash
unsigned int ELFHash(char *str){ unsigned int hash = 0; unsigned int x = 0; while (*str) { hash = (hash << 4) + (*str++); if ((x = hash & 0xF0000000L) !=...原创 2018-03-15 22:08:30 · 232 阅读 · 0 评论 -
字符串的最小表示法(模板)
循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S’是S的循环同构的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。 对于字符串循环同构的最小表示法,其问题实质是求S串的一个位置,从这个位置开始循环输出S,得...原创 2018-05-24 19:55:10 · 292 阅读 · 0 评论 -
(模板)扩展KMP算法
#include<iostream>#include<string>using namespace std;/* 求解T中next[],注释参考GetExtend() */void GetNext(string T, int next1[]){ int t_len = T.size(); next1[0] = t_len; int a;...原创 2018-05-23 21:07:52 · 199 阅读 · 0 评论 -
(模板)Trie树(字典树)
模板按照的是洛谷P2580的要求写的,query函数返回3种状态:不存在此单词,存在且第一次查询,存在且多次查询 指针版:#include<cstdio>#include<iostream>#include<vector>#include<cstring>#include<algorithm&a原创 2018-03-28 22:45:24 · 378 阅读 · 0 评论 -
(模板)KMP算法
写了几种版本,首先是string版的。string大法吼哇!!! 这里的next1[i]指的是在0~i-1构成的字符串中有多大长度的相同前缀后缀,同时也是模式串str2[i]匹配失败后跳转到的位置。同时值得注意的是这里的字符串是从0开始的#include<cstdio>#include<iostream>#include<cstring>#inc...原创 2018-03-27 19:59:44 · 126 阅读 · 0 评论 -
logn的最长公共子序列
最长公共子序列(LCS)最常见的算法是时间复杂度为O(n^2)的动态规划(DP)算法,但在James W. Hunt和Thomas G. Szymansky 的论文”A Fast Algorithm for Computing Longest Common Subsequence”中,给出了O(nlogn)下限的一种算法。 定理:设序列A长度为n,{A(i)},序列B长度为m,{B(i)},考虑...原创 2018-04-02 20:53:07 · 354 阅读 · 0 评论 -
HDU3336
看到题目的第一反应是:这不是AC自动机模板么…每次截取子串然后添加到trie树中,然后跑一遍匹配即可…然后妥妥tle了…正解应该基于这样的考虑:在kmp算法中,我们的next数组其实是对应了模式串在当前位置能否在之前的位置中找到与当前后缀相同的前缀字符串,那么如果当前位置对应的next不是0的话,就说明前缀字符串在当前位置找到了一个匹配,也就是题目中的要求;因此,其实统计一遍next即可; 但是...原创 2018-04-02 17:37:56 · 364 阅读 · 0 评论 -
URAL - 1423
一个很显然的思路就是,把串1复制一遍接在自己后面,然后将串2作为模式串,串1作目标串去匹配,如果匹配到就可以输出次数。唯一的坑点在于如果两个串原来就是相等的,那么一定要注意输出0…..#include<cstdio>#include<iostream>#include<algorithm>#include<string>using n...原创 2018-04-01 20:27:27 · 272 阅读 · 0 评论 -
洛谷P2444 病毒(AC自动机变形)
作为一道蹂躏了我一天的题…我也没啥好说的了QAQ… 思路概述 我们知道,AC自动机是一种多模字符串匹配算法。构造 Trie 树 后,在模式串末尾一位的结点作上标记。平常的 AC自动机 是尽量能多接触到这些标记,使总值最大。本题倒是有点奇葩,要构造一个可行的无限长文本串,使没有任何子串为给出模式串中的一个。也就是说,我们需要让平常 AC自动机 的查询操作,尽量避免标记,能用失配指针跳转就跳转。...原创 2018-03-30 16:20:28 · 268 阅读 · 0 评论 -
洛谷P3808 AC自动机复杂版
这题有个数据非常鬼畜,反正我的板子莫名会wa一个地方,改改虽然对了但是还是有点懵逼。#include<cstdio>#include<iostream>#include<algorithm>#include<vector>#include<cstring>#include<queue>#include<...原创 2018-03-29 17:50:04 · 193 阅读 · 0 评论 -
(模板)AC自动机
说明链接:https://blog.csdn.net/creatorx/article/details/71100840 代码:(其中有个地方需要非常注意)// luogu-judger-enable-o2#include<cstdio>#include<iostream>#include<algorithm>#include<queue...原创 2018-03-29 17:43:05 · 185 阅读 · 0 评论 -
2018 Spring Training 字符串合集
A.HDU3374 题目其实很简单,就是求给定串的最大最小表示法,然后求出现的次数的话,就把原串复制一遍接在串尾,然后跑一遍kmp求出现次数即可。#include&amp;amp;amp;lt;cstdio&amp;amp;amp;gt;#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;string&amp原创 2018-05-24 20:08:40 · 262 阅读 · 0 评论