字符串
GoLakerswxy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ - 1743 Musical Theme (后缀数组+二分 求重复出现过的最长不相交子串)
题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的子串。满足1.长度至少为5个音符。2.在乐曲中重复出现。(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值)3.重复出现的同一主题不能有公共部分。思路:用后缀数组求出height后,二分答案len,判断height>...原创 2018-07-26 09:53:40 · 311 阅读 · 0 评论 -
计蒜客 焦作网络赛 String and Times(后缀数组)
题目:给一个字符串问重复出现的次数在[A,B] 区间的子串有多少种。思路:后缀数组,对于一个height[i],求height[i-1]---height[i]区间有多少个h满足存在大于等于h的连续的最长长度>=A并且<=B的一个序列(h的数量比较少可以单个枚举。。),这里用rmq来实现。然后另外算一下A==1的情况,也就是只出现了一次的子串有多少个(比赛时就是这里写错了,唉,我t...原创 2018-09-15 20:09:34 · 489 阅读 · 2 评论 -
回文树(模板)
引用:Palindromic Tree——回文树【处理一类回文串问题的强力工具】回文树练习题集首先,回文树有何功能?假设我们有一个串S,S下标从0开始,则回文树能做到如下几点:1.求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符不同便是本质不同)2.求串S内每一个本质不同回文串出现的次数3.求串S内回文串的个数(其实就是1和2结合起来)4.求以下标i结...转载 2018-09-09 21:48:35 · 296 阅读 · 0 评论 -
计蒜客 2018南京网络赛 I Skr(回文树)
题目:给一串由0..9组成的数字字符串,求所有不同回文串的权值和。比如说“1121”这个串中有“1”,“2”,“11”,“121”三种回文串,他们的权值分别是1,2,11,121。最终输出ans=135。思路:之前写了马拉车的算法,网上看到的这个题是回文树的模板题。。。#include<bits/stdc++.h>using namespace std;typedef l...原创 2018-09-11 11:25:06 · 340 阅读 · 0 评论 -
计蒜客 2018南京网络赛 I Skr(马拉车+哈希)
题目:给一串由0..9组成的数字字符串,求所有不同回文串的权值和。比如说“1121”这个串中有“1”,“2”,“11”,“121”三种回文串,他们的权值分别是1,2,11,121。最终输出ans=135思路:昨天比赛时读题给读错了样例也没看怎么来的。写成了所有的回文串权值和。。。码完代码发现,玛德样例都不对,再读了一遍题,真是智障啊。今天看到有大佬讨论马拉车+哈希的做法,(本菜鸡学的马拉车...原创 2018-09-02 14:07:52 · 831 阅读 · 0 评论 -
牛客网多校9 Typing practice(kmp)
题目:n个模式串,一串操作比如aaa-bc-表示在一个空串中加入一个字符,或者在末尾移走一个字符,每次操作后问最少再加几个字符使得后缀中出现至少一个模式串。思路:普通kmp T到绝望,一个实例:s数组为aaaaaab-b-b-,t数组是aaaaaaaa,那么每次加入一个b字母,j=nxt[j]就要不停地调到0,这样复杂度会退化为tlen*slen. 这时候需要修改next数组,使两个字符不相...原创 2018-08-17 13:43:29 · 501 阅读 · 0 评论 -
牛客网多校3 Sort String(后缀数组DC3)
题目:就是给你一个串,对于第i个位置,你可以把前i个字符放到队尾形成一个新的字符串,问你最后一共有几个字符串DC3卡过去了hhhh#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define F(x) ((x)/3+((x)%3==1?0:...原创 2018-07-27 22:04:11 · 246 阅读 · 0 评论 -
POJ - 3693 求这串字符中的重复次数最多的连续重复子串,多组答案输出字典序最小的那个串(后缀数组)
题目:求这串字符中的重复次数最多的连续重复子串,多组答案输出字典序最小的那个串。思路:与前一个题目几乎一样的,加上了字典序。多判断就好//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm&...原创 2018-07-27 20:26:11 · 445 阅读 · 0 评论 -
SPOJ - REPEATS (后缀数组,rmq,lcp 求重复次数最多的连续重复子串)
题目:给定一个字符串,求重复次数最多的连续重复子串。思路:先穷举长度L,然后求长度为L的子串最多能连续出现几次。首先连续出现1次是肯定可以的,所以这里只考虑至少2次的情况。假设在原字符串中连续出现2次,记这个子字符串为S,那么S肯定包括了字符r[0], r[L], r[L*2],r[L*3], ……中的某相邻的两个。所以只须看字符r[L*i]和r[L*(i+1)]往前和往后各能匹配到多远,记...原创 2018-07-27 19:21:28 · 454 阅读 · 0 评论 -
POJ - 3261 Milk Patterns(后缀数组+二分 求出现次数>=k的最长子串)
题目:找一个串中出现次数多于k的最长子串。数据好像有些大,先离散一下。之后二分长度就可以了//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;...原创 2018-07-26 10:20:04 · 232 阅读 · 0 评论 -
POJ - 2406 Power Strings (后缀数组dc3算法模板)
题目:给出一个字符串 问它最多由多少相同的字串组成 。kmp简单的三十行代码而且时间还快,一切都是为了dc3模板/*复杂度接近O(n)所有相关数组都要开三倍*/#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define F(x) ...原创 2018-07-27 10:44:16 · 404 阅读 · 0 评论 -
SPOJ - DISUBSTR Distinct Substrings (后缀数组求一个串中不同子串的数量)
题目:求一个串中不同子串的数量。每个后缀答案的贡献是(n-sa[i]+1-height[i])n为子串结束位置。//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using nam...原创 2018-07-27 09:08:17 · 234 阅读 · 0 评论 -
牛客网多校1 Substring(后缀数组)
题目:给你一个只含abc的字符串,求出所有不同构的子串。同构的定义是指在所有的映射方案下不相同,例如abc可以映射为acb bac bca cab cba,这六个串是相互同构的。(题意是一直没明白啊,,)思路:把abc的所有的映射方案枚举出来,然后按照每种映射方案把S串变换为6个串。最后求出6个串的(不同子串数量+3*单一字符的串数量)/6。除以6 ,例如ab->(ab,ac,ba,bc...原创 2018-07-30 09:29:29 · 318 阅读 · 0 评论 -
hihocoder #1415 : 后缀数组三·重复旋律3 ( 后缀数组da算法模板)
题目:小Hi平时的一大兴趣爱好就是演奏钢琴。我们知道一个音乐旋律被表示为长度为 N 的数构成的数列。小Hi在练习过很多曲子以后发现很多作品中的旋律有共同的部分。旋律是一段连续的数列,如果同一段旋律在作品A和作品B中同时出现过,这段旋律就是A和B共同的部分,比如在abab 在 bababab 和 cabacababc 中都出现过。小Hi想知道两部作品的共同旋律最长是多少?(字符串长度不超过 10...原创 2018-07-15 12:31:33 · 266 阅读 · 0 评论 -
HDU - 5008 B -Boring String Problem (后缀数组 求排名第k小的子串)
题目:给出一个字符串,求不同的子串中排名第k小的子串,并求出字符串的起止位置,如果有多个重复的子串,求出位置最靠左的子串。思路:子串是后缀的前缀,后缀数组对后缀排序的同时,也对子串进行了排序。对于每一个sa[i],会产生n - sa[i] - height[i]个不同的子串,而且这些子串也是排好序的。维护一个n - sa[i] - height[i]的前缀和,二分找一下就可以,找重复的里面的最...原创 2018-09-07 11:36:08 · 567 阅读 · 0 评论
分享