字符串处理
左佥都御史
这个作者很懒,什么都没留下…
展开
-
HDU5510-思维-字符串匹配剪枝
https://vjudge.net/contest/166969#problem/M kmp一直TLE。 后来又节省他找next数组的时间(用vis数组设置) 用map记录每个串出现的字母的个数,如果子串大于母串肯定不可以。 这种剪枝都too young too naive了。 AC自动机也不能ac。。 方法。 可以想到的是,如果一个串是他前面串的子串,那么如果他前面那个串又是 他原创 2017-06-11 17:12:50 · 258 阅读 · 0 评论 -
zoj&CCPC秦皇岛站E-思维-String of CCPC
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5615 wa了好多次。 给定一个字符串,由c和p组成,可以添加c或者p。 串中出现一个ccpc 价值+1(ccpc可以出现部分重叠),但是如果添加x个字母,那么花费为x-1。问你 价值-花费 的总价值 最大。 最多总价值可以比原来串中的ccpc数目增加1,原创 2017-10-29 19:29:40 · 507 阅读 · 0 评论 -
hdu5918-kmp|队列模拟- Sequence I
https://vjudge.net/problem/HDU-5918 题意:给定两个序列,一个为主串,一个为模式串,问主串中 间隔长度为p一个一个取构成了p个子串,问你包含模式串的数量有多少个。。 思路:事后看来,直接kmp就行。。就是把那么多子串取出来而已。然后用一下kmp的板子。。这简直是模拟题。。。 当时我的想法就是把等于模式串的第一个数入队列,然后用优先队列一个一个找。后原创 2017-10-09 12:38:34 · 224 阅读 · 0 评论 -
hdu2222-AC自动机&模板-Keywords Search
http://acm.hdu.edu.cn/showproblem.php?pid=2222 ac自动机的 失配指针不同于 kmp,不是递归算,是用广搜算的。 对很多模式串的处理,是基于字典树。 以后的问题,做题中慢慢遇到吧。#include <bits/stdc++.h> using namespace std; struct Trie { int next[500010][26],原创 2017-09-02 12:27:37 · 164 阅读 · 0 评论 -
hdu5442-字符串循环节&最小表示法|后缀数组(未补)|kmp+最小-Favorite Donut
http://acm.hdu.edu.cn/showproblem.php?pid=5442 给定一个字符串,长度为n。 定义有正和反两种读的方法,则其同构的串总共为2*n. 问你这么多串中 最大的同构串的起始位置。 若最大同构串出现多次。 ①要求起始位置最小。(位置从1到n) ② 如果正向和反向的起始位置一样,则输出正向。 。 有kmp的方法,但是没怎么搞明白。 后缀数组。。我还原创 2017-08-30 16:49:28 · 293 阅读 · 0 评论 -
计蒜客-树状数组&KMP-Query on a string
https://nanti.jisuanke.com/t/16956 写了好多次,用我自己的kmp写法一直 tle。 用kmp处理母串中每个位置 失配模式串的位置 然后用树状数组处理,(据说线段树会卡??) kmp还要好好学。。#include<bits/stdc++.h> using namespace std; /* 每次维护保存一个 当前位置失配的位置。 (相当于维护一个next,因原创 2017-09-14 21:23:13 · 172 阅读 · 0 评论 -
hdu3374-最小表示法&&kmp求循环节-String Problem
http://acm.hdu.edu.cn/showproblem.php?pid=3374 之前做过一道exkmp的题,就是先求的 循环节。就是用的这个代码的方法。。 开始先用表示法来算的,然后暴力枚举超时了,就想到用循环节式一下。 用string会超时,挂载也超时 给你一个串,分别输出 字典序最小同构串的 第一个字符位置(从1开始) 出现次数 字典序最大同构串的第一个位置 出现次原创 2017-08-23 19:28:38 · 201 阅读 · 0 评论 -
hdu6170-多看几遍之DP&递推&字符串-Two strings
http://acm.hdu.edu.cn/showproblem.php?pid=6170 给定两个串。 a串是正常串。 b串中有两种元素。 1 种是* ,可以让前面那个出现任意次(甚至让他出现0次) 2 是. 和任意字符匹配。 too young 系列。 日后,用搜索也写写,应该也行。 可以发现 几种状态转移。 ① 当为 . 时,这时没的说,由dp[i-1][j-1】得来 ②原创 2017-08-23 18:38:04 · 364 阅读 · 3 评论 -
hdu2609-字符串最小表示法|模拟|二分+lcp-How many
http://acm.hdu.edu.cn/showproblem.php?pid=2609 给你m个串,长度相等。只有0和1组成, 他们都可以把后面的 放在前面。并且这种串算作相同的 比如 1100 1001 0011 0110 这四个。 问你m个中有多少不同的。 暴力写的,后来看别人的题解。最小表示法,O(n),,类似用两个指针 来比较,利用的是 字典序的相关特质, 还有一个lcp+原创 2017-08-23 14:41:31 · 217 阅读 · 0 评论 -
HDU3068-manacher算法-最长回文串
https://vjudge.net/problem/HDU-3068 求最长的回文串。 有一次用dp求过一次。 :我们都知道求回文串可以依赖于暴力的方法(以某点为重心,暴力的比呗),manacher方法的思想在于利用对称性来减少暴力运算,从而提高效率。 从左到右遍历字符,记录最大的 回文串的右界(记当时的 字符位置为i) 分两种情况 1 当前遍历字符x在 右界右边。这时候无法利用对称原创 2017-08-14 14:56:53 · 298 阅读 · 0 评论 -
hdu6153-exkmp&&脑洞-A Secret
http://acm.hdu.edu.cn/showproblem.php?pid=6153 给定一个a串作为 母串,然后b作为模式串, f【i】 为b的后缀的长度。 d[i] 为b这个后缀在 a串中出现的次数。。 问你他们的 积是多少,积mod1e9+7 。。 这个后缀很误导人惹 颠倒一下,发现这就是前缀出现的次数。 前缀??? exkmp的 extend就是 母串子串和模式串的原创 2017-08-20 20:00:08 · 379 阅读 · 0 评论 -
hdu4333-拓展kmp-Revolving Digits
http://acm.hdu.edu.cn/showproblem.php?pid=4333 拓展kmp,打算在写几道再讲,现在只是理解了大概思想qwq。 给定一个字符串,可以把它后面的字母往前放,问你有多少大于原数,小于原数,等于原数的。qwq 暴力保存了一个,mle。毕竟1e5 后来看了正解,真的不错。原串乘2 是这种情况 模式串(len) 和 目标串的子串(长度也为len)比较原创 2017-08-20 16:46:03 · 243 阅读 · 0 评论 -
hdu2087-自己的理解&kmp讲解-剪花布条
http://acm.hdu.edu.cn/showproblem.php?pid=2087 链接 时隔多年,终于理解kmp了。。 1 进行字符串匹配,如果进行暴力匹配的话,(即一个一个找,时间复杂度O(len1*len2),是不可取的,) 2 所以需要改进这个算法。 如何改进,这个问题,引起了三个年轻小伙子的注意,有一天他们在一个小溪边玩,突然发现了一个老太太在磨针,并且针的 头和尾原创 2017-08-20 10:43:01 · 832 阅读 · 2 评论 -
TM系列-思维-hdu5455
https://vjudge.net/contest/167883#problem/F 我tm郁闷,比赛中发现不合格的情况只有cfc 和cc这俩货,然后我就直接find了,一直wa。我就在考虑我去肯定有没考虑到的,想的样例都能过。是在是想不到为啥啊。。 后来队友把他的代码处理了非c非f的情况就a了。 然后今天我才发现我的也是。。。。好坑。#include <iostream> #include原创 2017-06-24 21:57:01 · 239 阅读 · 0 评论 -
ac自动机题集和应用
最近需要使用ac自动机。补了一下算法。 https://www.cnblogs.com/sclbgw7/p/9260756.html https://www.cnblogs.com/sclbgw7/p/9875671.html 大佬的博客 下面说自己的心得(算法的理解要等我多刷一些题在写。) 1 大佬博客说的 辅助根优化,我没有发现。正常的字典树不都是有一个根么。ac自动机也用0做根,没毛病啊。 ...原创 2019-10-11 17:31:54 · 233 阅读 · 0 评论