SPOJ
文章平均质量分 92
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
SPOJ - LCS2 Longest Common Substring II 后缀自动机
题意:给出n(n<=10)个字符串,求它们的最长公共子串。 后缀自动机 先用第一个字符串建立后缀自动机,然后用剩余的n-1个字符串在自动机上跑, 每次把以节点i结尾的最长公共子串保存在minl[i]中,0<=i<= sam.tot。 数组遍历一遍minl数组,找最大的minl[i]就是这n个串的最长公共子串了。 复杂度 O(10length)原创 2017-03-04 19:01:38 · 1028 阅读 · 0 评论 -
SPOJ - LCS Longest Common Substring 后缀自动机
题意:求两个字符串的最长公共子串。 后缀自动机 看了很久 WJMZBMR 讲后缀自动机的ppt才大致把后缀自动机搞懂^_^, 此外附上两个比较好的讲后缀自动机的博客 后缀自动机 模版,后缀自动机讲解 这题直接用一个字符串建立后缀自动机,然后用另一个串在自动机上跑即可,操作和AC自动机有点类似, 只是AC自动机匹配失败的时候用的fail指针,而这里用pre树跳转。 复杂度 O(n)原创 2017-03-04 18:54:55 · 846 阅读 · 0 评论 -
SPOJ - SUBLEX Lexicographical Substring Search 后缀数组、跑的非常快、开心、☺☺
题意:给一个长度不大于90000的字符串,每次询问它的所有不同子串中,字典序第k小的,询问不大于500个。 后缀数组 本来是找了一个后缀自动机的题,看了题以后觉得用后缀数组做比较方便, 结果交了一发,发现自己的代码竟然是目前为止vj上这个题史上最快的,害怕 开心 Y ( ^ _ ^ ) Y, 首先用字符串s,倍增算法跑出 sa和height, 然后把询问根据v[j].q的大小排序 然后对于每个i,(1<=i<=n), cnt += (n - sa[i]) - height[i]; 表示截止当前后缀,所能表原创 2017-03-06 01:41:31 · 1288 阅读 · 6 评论 -
SPOJ - COT Count on a tree 树上主席树+LCA+任意路径问题
题意:给出一个树和树上每个点的权值,给出m个询问(u,v,k),询问在树上从点u到点v所构成的路径上权值第k小的点的权值。 树上主席树+LCA+任意路径问题 主席树维护的一个前缀和,而前缀和不一定要出现在一个线性表上(或者说树型可以线性话),即对于每个从根到点u的路径是一个线性序列,可以把这个序列建成主席树。 利用这个前缀和,我们可以解决一些树上任意路径的问题,比如在线询问[u,v]点对的距离——dist[u]+dist[v]-2*dist[LCA(u,v)]。 类似的,我们可以利用主席树来解决树上任意路径原创 2017-10-17 15:18:27 · 792 阅读 · 0 评论