题目大概是给n个数组成的串,求是否有多个“相似”且不重叠的子串的长度大于等于5,两个子串相似当且仅当长度相等且每一位的数字差都相等. 这题是传说中楼教主男人八题之一,虽然已经是用后缀数组解决不可重叠最长重复子串的经典题了..但其实没那么简单,题目数据不强,网上一些代码都是不正确的. 首先把问题转化成重复子串的问题:把原串每一位都与前一位相减.这样得出的新串如果有两个长度为n的子串相同,那么它们对应在原串的长度n+1的子串也就相似. 所以接下来要求的就是这个新串不可“重叠”最长重复子串——问题就在…
题目链接:https://vjudge.net/problem/POJ-1743 Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 32402   Accepted: 10808 Description A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the ra…
为何scanf("%s", str)不需要&运算 经常忘掉的字符串知识点,最好不加&,不加&最标准,指针如果像scanf里一样加&是错的,大概是未定义行为 马拉车 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<queue> using…
后缀家族已知成员         后缀树         后缀数组         后缀自动机         后缀仙人掌         后缀预言         后缀Splay ? 后缀树是后缀数组和后缀自动机的祖先? 功能还是比较强大的,在回文串或者字典序方面还是有用处. 而且现在已经有了线性的建树方法. (但其实我也没用过后缀树.)下面对比后缀自动机和后缀数组     单个字符串问题                                                     …
题目: https://loj.ac/problem/6173 分析: 考虑枚举宽度w,然后把宽度压位集中,将它们哈希 (这是w=2的时候) 然后可以写一下string=“ac#bc” 然后就是求这个string本质不同的字符串个数(要去掉连接符#) 这个可以用后缀数组/后缀自动机解决 小技巧:每个连接符用不同的整数表示,那么去做height的时候就不会把连接符包含进去 后缀数组解决的时间复杂度:O(n^3logn)…
A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the range 1..88, each representing a key on the piano. It is unfortunate but true that this representation of melodies ignores the notion of musical timing; b…
  [题目链接] http://poj.org/problem?id=1743     [题意]     求不可重叠最长重复子串.   2015-11-27 [思路] 1)      据题意处理字符串 2)      后缀数组.二分长度k,问题成为了判定是否存在两个及以上长度不小于k且互不重叠的子串.根据height数组划分后缀,满足两个条件:一是一组内height值不小于k(保证组内任两个长度不小于k即存在长度不小于k的子串),二是组内后缀sa值的最大最小值之差大于等于k(保证两个子串不重叠)…
Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 27539   Accepted: 9290 Description A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the range 1..88, each representing a key on the…
Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 27539   Accepted: 9290 Description A musical melody is represented as a sequence of N (1<=N<=20000)notes that are integers in the range 1..88, each representing a key on the…
                                                    Musical Theme 人生第一道后缀数组的题,采用大众化思想姿势极其猥琐. 题意:给你n个数,问其中是否存在一个子序列,这个子序列加上或者减去一个数与另一个子序列一样.要求两个子序列不能有重叠的部分.求这个子序列最长的长度. 思路:有点像KMP,先将所有的数之间的差(再加上88)存在一个数组中,然后对这个数组进行构造后缀数组.我们知道height[]数组的含义是:排名为i的这个后缀与排名…