>字符串<
文章平均质量分 82
DT2131
Rage, rage against the dying of the light.Do not go gentle into that good night.
展开
-
HDU 3294 Girls' research (manacher模板题)
题意:给你一个字符串,对其凯撒加密后,求最长回文串代码:#include using namespace std;const int MAXN=400000;struct Manacher{ char Ma[MAXN*2]; int Mp[MAXN*2]; int Mx[MAXN*2]; int len; double ave; i原创 2016-12-05 17:20:26 · 422 阅读 · 0 评论 -
SPOJ694 Distinct Substrings (trie 树)
题意: 给出一个字符串,问有几个不同子串思路: 我是在学习后缀数组时做到这道题的,但是我的第一反应并不是后缀数组的做法,而是 AC 自动机。 AC 自动机 的本质就是记录不同状态的子串。类似于在 数字逻辑 一课 中所学的状态转移表。 子串的状态数就是 AC 自动机 中的状态数。 为了得到母串中的每个子串,原创 2017-02-09 01:36:16 · 789 阅读 · 0 评论 -
POJ - 2217 Secretary
题意: 给出 N 组数据,每组数据两个串,求串的最长公共字串思路: 同 POJ 2774 后缀数组解决。代码:#include #include #include #include #include using namespace std;/*suffix array*倍增算法 O(n*logn)*待排序数组长度为n,放在0~n-原创 2017-03-08 13:55:08 · 330 阅读 · 0 评论 -
POJ - 2774 Long Long Message
题意: 求两个串的最长连续子串。思路: 由于串匹配算法较多,我们要先分析。 先看数据规模Two strings with lowercase letters on two of the input lines individually. Number of characters in each one will never exceed原创 2017-03-08 13:24:03 · 329 阅读 · 0 评论 -
POJ - 3261 Milk Patterns
题意:给出一串数,求可重叠k次的最长重复子串。思路: 后缀数组。 先二分答案,然后将后缀分成若干组。 这里要判断的是有没有一个组的后缀个数不小于k。 如果有,那么存在k个相同的子串满足条件,否则不存在。 时间复杂度为O(nlogn) 。 可参考 09 年国家队论文 罗穗骞《后缀数组原创 2017-03-08 14:16:39 · 352 阅读 · 0 评论 -
POJ - 1509 Glass Beads
题意:求字符串的最小表示思路: 后缀数组裸题代码:#include #include #include #include #include using namespace std;/*suffix array*倍增算法 O(n*logn)*待排序数组长度为n,放在0~n-1中,在最后面补一个0*build_sa(,n+1, ); //注意是n+原创 2017-03-08 14:20:34 · 388 阅读 · 0 评论 -
URAL - 1960 Palindromes and Super Abilities
题意: 给出一个串,问对于串的每个前缀各包含多少种回文串思路: 按http://blog.csdn.net/u013368721/article/details/42100363 所讲 回文树 的思路所写。代码:#include using namespace std;const int MAXN = 100005 ;const int N原创 2017-03-25 18:05:03 · 435 阅读 · 0 评论 -
HDU 3068 最长回文 (回文自动机)
题意: 中文思路: 这是一道 Manacher 模板题,Manacher 解法如下 http://blog.csdn.net/dt2131/article/details/53467397 我们也可以用回文自动机完成。 什么是回文自动机?代码:#include #i原创 2017-03-26 07:39:47 · 577 阅读 · 0 评论 -
HDU 3068 最长回文 (Manacher 模板题)
题意:中文代码:#include using namespace std;const int MAXN=210000;struct Manacher{ char Ma[MAXN*2]; int Mp[MAXN*2]; int Mx[MAXN*2]; int len; double ave; int l; int ans;原创 2016-12-05 17:25:51 · 428 阅读 · 0 评论 -
HDU - 4787 GRE Words Revenge (在线AC自动机,自动机的重构)
转载自:http://blog.csdn.net/no__stop/article/details/16823479 题意:学习英语单词,有n个操作,每次可以读入一个单词,或者询问一个文本串,查询有多少个不同的单词已读入。文本是被加密过的,加密的方法就是将文本旋转上一次询问的答案次。旋转的操作不解释了,看下题目吧。解题:AC自动机。大致的思路是用两个自动机,一个heap,一个b转载 2017-04-29 16:10:41 · 409 阅读 · 0 评论 -
ZOJ - 1729 Hidden Password (求串的最小表示)
题意: 求串的最小表示思路: 后缀数组,或是更快的办法代码:更快的办法:#include using namespace std;int MinimumRepresentation(string s){ int i = 0, j = 1, k = 0,t; int l=s.size(); while (i <原创 2017-04-19 18:40:10 · 386 阅读 · 0 评论 -
POJ - 1509 Glass Beads (串的最小表示)
题意: 求串的最小表示思路: 求串的最小表示,可以利用后缀数组求得,但也有更快的思维。代码:更快的思维#include #include using namespace std;int MinimumRepresentation(string s){ int i = 0, j = 1, k = 0,t; int l=s原创 2017-04-19 18:37:36 · 431 阅读 · 0 评论 -
Gym - 101350I Mirrored String II 求给定字符的最长回文
题意: 求给定字符的最长回文串思路: 将非给定字符离散成不同的值即可代码:#include using namespace std;const int MAXN=210000;char ch[]={'A', 'H', 'I', 'M', 'O', 'T', 'U', 'V', 'W', 'X', 'Y'};char ch2[]={'A',原创 2017-04-23 08:14:25 · 803 阅读 · 0 评论 -
HDU 2087 KMP求匹配串的重复次数
剪花布条Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u HDU 2087Description一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?原创 2016-07-19 03:09:47 · 441 阅读 · 0 评论 -
HDU 5510 Bazinga (KMP)
题意: 找到最大的i(1≤i≤n),存在一个整数j(1≤j思路: 数据量 500 * 2000 AC自动机 × 只能暴力匹配,但要剪枝 对于大量存在前后覆盖的串的数据,我们可以通过合并可覆盖的串减小数据范围。 例: ab abc原创 2017-06-18 10:45:13 · 374 阅读 · 0 评论 -
POJ 3450 Corporate Identity( AC自动机 )
题意: 给出 N 个串,问这几个串的最长公共字串是什么?若有多个输出字典序最小的。思路: 由于 N 小于 4000 且长度小于 200。我们完全可以用暴力的方法。 不妨将第一个串当成母串,枚举出他的所有子串。并将其所有子串作为模式串,与其他的串进行匹配。 这里匹配的方法直接利用了 AC自动机 。 由于要输原创 2017-02-19 03:13:11 · 483 阅读 · 0 评论 -
NEFU 1210 补充字符
题意:中文思路:显然,用KMP求得NEXT数组(判断重复性)后由串尾字符的NEXT,可知子串的长度对比原串长度后,即可得到答案。代码:#include #include #include using namespace std;const int MAXN=100005;int next[MAXN];char p[MAXN];void get_next()原创 2016-12-20 13:19:27 · 297 阅读 · 0 评论 -
HDU 2896 病毒侵袭 AC自动机
题意:中文题思路:不同的子串打上各自的id,跑匹配的时候统计一下就行。注意一个子串可能会多次出现在母串中代码:#include #include #include #include #include using namespace std;struct Trie{ int next[150000][128],fail[150000],end[150000原创 2016-11-16 10:45:41 · 313 阅读 · 0 评论 -
POJ 3974 Palindrome (manachr模板题)
题意:求最长回文串的长度代码:#include #include #include using namespace std;const int MAXN=1000010;struct Manacher{ char Ma[MAXN*2]; int Mp[MAXN*2]; int Mx[MAXN*2]; int len; double a原创 2016-12-05 17:15:45 · 286 阅读 · 0 评论 -
HDU 4513 吉哥系列故事――完美队形II
题意:中文思路:改下模板中的匹配规则代码:#include using namespace std;const int MAXN=200000;struct Manacher{ int Ma[MAXN*2]; int Mp[MAXN*2]; int Mx[MAXN*2]; int len; double ave; int l原创 2016-12-05 17:24:09 · 319 阅读 · 0 评论 -
FZU 1901 KMP找前后缀等串
Period IITime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u FZU 1901DescriptionFor each prefix with length P of a given string S,ifS[i]=S[i+P] for原创 2016-07-18 17:16:53 · 605 阅读 · 0 评论 -
HDU 1358 kmp找周期子串
PeriodTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u HDU 1358DescriptionFor each prefix of a given string S with N characters (each character ha原创 2016-07-18 17:23:14 · 433 阅读 · 0 评论 -
HDU 1686 求子串的数量
E - OulipoTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u HDU 1686DescriptionThe French author Georges Perec (1936–1982) once wrote a book, La di原创 2016-07-19 03:04:59 · 673 阅读 · 0 评论 -
HDU 1711 KMP求匹配位置
Number SequenceTime Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u HDU 1711DescriptionGiven two sequences of numbers : a[1], a[2], ...... , a[N], and原创 2016-07-19 03:07:16 · 375 阅读 · 0 评论 -
HDU 2203 亲和串
亲和串Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uHDU 2203DescriptionChristmas is coming! But on Christmas Eve, Li Laoshi still has one more clas原创 2016-07-19 03:13:24 · 541 阅读 · 0 评论 -
KMP模板
思路来自Matrix67:http://www.matrix67.com/blog/archives/115#include #include #include #include using namespace std;int flag[200]={0};void pre(string str2){ memset(flag,0,sizeof(flag)); int转载 2016-07-02 00:10:33 · 311 阅读 · 0 评论 -
KMP算法
转自Matrix67的BLOG:http://www.matrix67.com/blog/archives/115KMP算法详解 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串转载 2016-07-01 21:13:36 · 872 阅读 · 0 评论 -
HDU 1238 最长子串
B - SubstringsTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1238Appoint description: System Crawler (Jul 14, 2016 1:53:30 PM)原创 2016-07-18 17:12:26 · 618 阅读 · 0 评论 -
HDU 5880 Family View (AC自动机)
题意:模拟敏感词和谐器,T 组数据,每组数据 N 个子串,一个母串,输出和谐的母串思路:母串带空格,用gets就行,用子串的长度做标记,匹配时若匹配到,和谐掉’标记数‘个数个字符就行。代码:#include #include #include #include #include using namespace std;struct Trie{ int ne原创 2016-11-16 10:58:52 · 521 阅读 · 0 评论 -
HDU 5384 Danganronpa AC自动机
题意:T 组数据, N 个母串 ,M 个子串,求每个母串的匹配思路:子串可能相同,算多次匹配代码:#include #include #include #include #include using namespace std;struct Trie{ int next[100010][26],fail[100010],end[100010]; i原创 2016-11-16 10:53:09 · 378 阅读 · 0 评论 -
HDU 2222 Keywords Search AC自动机模板题
题意:T组样例,N个子串,查询母串中子串出现的次数。思路:ac自动机模板题代码:(kuangbin模板)#include #include #include #include #include using namespace std;struct Trie{ int next[500010][26],fail[500010],end[500010];原创 2016-11-16 11:00:21 · 314 阅读 · 0 评论 -
HDU-3065 病毒侵袭持续中 AC自动机
题意:中文题思路:统计一下就行代码:#include #include #include #include #include using namespace std;int res[1010];struct Trie{ int next[1010*55][128],fail[1010*55],end[1010*55]; int root,L;原创 2016-11-16 10:48:41 · 442 阅读 · 0 评论 -
HDU 5972 Regular Number Bitset (字符串匹配shift and/or)
题意:给一个长度为n的模式子串,子串的每个位置分别可以是一些数字,即一个位置可以被多个数字匹配。再给定一个母串,问子串可以在哪些位置和母串匹配,并且输出匹配成功后的所有子串.思路:KMP ?(×) 前后状态互不包含,状态无法转移AC自动机?(×) 模式串长1000,每个位置至多有10种状态 空间复杂度10^1000Algorithm:shift a原创 2017-07-24 12:50:49 · 428 阅读 · 0 评论