- 博客(4)
- 收藏
- 关注
原创 poj3693--出现次数最多的连续重复子串(后缀数组)
先穷举长度L,然后求长度为L的子串最多能连续出现几次。首先连续出现1次是肯定可以的,所以这里只考虑至少2次的情况。假设在原字符串中连续出现2次,记这个子字符串为S,那么S肯定包括了字符r[0], r[L], r[L2],r[L3], ……中的某相邻的两个。所以只须看字符r[Li]和r[L(i+1)]往前和 往后各能匹配到多远,记这个总长度为K,那么这里连续出现了K/L+1次。最后看最大值是多少。如...
2019-08-05 11:20:54 346
原创 poj1743-后缀数组(不重叠最长重复子串)
给你一串数字,求它们最长的重复(公差相同)子序列,且两个子序列不相交 大致思路:后缀数组+二分答案 问题: 1、将公差相同的子串转化为重复子串问题 比如说原序列为:a1 a2 a3 a4 a5 a6 a7 如果子串a3a4,a6a7是公差相同的子串,则a7-a4==a6-a3 移项:a7-a6=a4-a3 相邻的差相同? 于是想到原序列的差分序列: d1 d2 d3 d4 d5 d6 d7(d1=...
2019-08-02 17:52:22 447
转载 map
C++map<key,value>关于key:: 在程序中需要用到一个map,本来是这样写的, map<string, int> mapStr; 为了追求效率,把string改成了char *, map<char *, int> mapStr; 结果呢? 可想而知,每次放进去的是指针, 当查找的时候就出问题了,总是找不到。 因为key中存放的是指针,当然找不到了...
2018-09-19 18:40:21 190
原创 快速排序算法实现
欢迎使用Markdown编辑器写博客 本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦: 排序在各种场合经常被用到。 快速排序是十分常用的高效率的算法。 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它。 这样,排序问题就被分割为两个子区间。 再分别对子区间排序...
2018-08-04 14:27:37 338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人