题目大意:
问的是m个字符串里,都出现过的子串。子串也可以出现在这个串的逆序串中。
思路分析:
居然wa在全5个 “a” 的数据上。
二分的时候下界不能为0。。
思路大致上是把原串和逆序串全部处理出来,放入str中,然后在每个串中间加一个没有出现过的。
此处注意输入不仅仅是字母。
然后跑一遍后缀数组。
然后用标记计数就好了。
#include
#include ...
分类:
其他好文 时间:
2014-07-06 10:07:36
阅读次数:
202
题目大意:
求在m个串中同时出现两次以上且不覆盖的子串的长度。
思路分析:
二分答案,然后check是否满足,判断不覆盖的方法就是用up down 来处理边界。
#include
#include
#include
#include
#include
#include
#define maxn 110005
using namespace std;
char ...
分类:
其他好文 时间:
2014-07-03 16:55:30
阅读次数:
350
题目大意:
串1中有多少个后缀和 串2中的某个后缀 的lcp 为 k
思路分析:
先找出 长度至少为k的对数有多少。
再找出 至少为k+1的有多少
然后相减。
#include
#include
#include
#include
#include
#include
#define maxn 110005
using namespace std;
int ...
分类:
其他好文 时间:
2014-07-03 16:26:57
阅读次数:
195
题目大意:
求出在m个串中出现过大于m/2次的子串。
思路分析:
如果你只是直接跑一次后缀数组,然后二分答案扫描的话。
那么就试一下下面这个数据。
2
abcdabcdefgh
efgh
这个数据应该输出
efgh
问题就在于对于每一个串,都只能参与一次计数,所以在check的时候加一个标记数组是正解。
#include
#include
#inc...
分类:
其他好文 时间:
2014-07-03 15:35:12
阅读次数:
171
题比较容易读懂,但是建模需动点脑子:
一个子串加常数形成的子串认为跟子串相同,求最长不重叠重复子串
题目中说
is disjoint from (i.e., non-overlapping with) at least one of its other appearance(s)
意味着不能重叠,举个例子
1, 2,3, 52, 53,54
1,2, 3和 52, 5...
分类:
其他好文 时间:
2014-07-02 15:15:01
阅读次数:
289
题目大意:
求可覆盖的出现k次的子串的最大长度。
思路分析:
同样是二分答案的长度,然后扫描height判断是否成立。
#include
#include
#include
#include
#define maxn 1000005
using namespace std;
int str[maxn];
int sa[maxn],t1[maxn],t2[maxn]...
分类:
其他好文 时间:
2014-07-02 09:02:19
阅读次数:
258
题目大意:
求串中不同的子串的个数。
思路分析:
子串一定是某一个后缀的前缀。
所以我们把每一个后缀拿出来,分析它有多少个前缀,然后除去它与sa数组中前面那个后缀相同的前缀。
最后也就是 ans = segma (n-sa[i] + height[i])....
#include
#include
#include
#include
#define maxn 1...
分类:
其他好文 时间:
2014-07-02 07:23:21
阅读次数:
182
题目大意:
计算两个字符串的最长的公共字符串字串的长度。
思路分析:
将两个串合并起来。
然后直接跑后缀数组求出height
然后就可以直接扫描一次height ,加个是不是在一个串中的判断就可以了。
#include
#include
#include
#include
#define maxn 200005
using namespace std;
cha...
分类:
其他好文 时间:
2014-06-30 19:59:06
阅读次数:
194
题目大意:
刚才上88个键弹出来的音符。
如果出现重复的,或者是高一个音阶的重复的都算。
思路分析:
具体可以参考训练指南222.
height数组表示按照排序后的sa最近的两个后缀的最长前缀。
将height 分块。然后二分答案,二分答案之后去判断是否满足。
要考虑到不重合,还有大于5。
所以二分的时候要从5开始,然后判断的时候要加一个 up - down >le...
分类:
其他好文 时间:
2014-06-30 19:27:18
阅读次数:
242
题意:给你两个字符串,求最长公共字串的长度。
by:罗穗骞模板
#include
#include
#include
#include
using namespace std;
#define M 303
#define inf 0x3fffffff
#define maxn 500000
#define ws ww
#define rank RANK
#define F(x)...
分类:
其他好文 时间:
2014-06-28 08:00:24
阅读次数:
190