思路:枚举第一个字符串的位置,然后枚举最长公共前缀的长度,时间即会下降…… #pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream> #include<cstdio> #include<cstring> #i ...
分类:
其他好文 时间:
2017-07-23 18:20:00
阅读次数:
131
题目大意:一个字符串三个操作:①求两个后缀的LCP②插入一个字符③修改一个字符。 前几天刚学了hash+二分求lcp,就看到这题。 原来splay还能这么用?!原来splay模板这么好写?我以前写的splay是假的吧woc splay每个节点代表一个字符,并维护这个子树代表一个子串的哈希值。因为sp ...
分类:
Web程序 时间:
2017-06-29 17:28:55
阅读次数:
208
以前一直用SA求LCP,今天学习了一波hash+二分求LCP的姿势,也是nlogn而且常数更小了. hash+二分可以logn比较两个后缀的字典序大小,求出LCP然后比较LCP后一个字符的字典序 #include<iostream> #include<cstdlib> #include<cstrin ...
分类:
其他好文 时间:
2017-06-25 18:42:13
阅读次数:
203
传送门 很蒙蔽,不知道怎么搞。 网上看题解有说可以哈希+二分搞,也有的人说用Manacher搞,Manacher是什么鬼?以后再学。 对于这个题,可以从矩阵4个角hash一遍,然后枚举矩阵中的点,再二分半径。 但是得考虑边的长度为奇偶所带来的影响。 比如 1 1 1 1 这个边数为偶数的矩阵显然没法 ...
分类:
其他好文 时间:
2017-05-16 21:41:36
阅读次数:
240
题意: 求两个矩形最大公共子正方形。(n<=50) 范围这么小可以枚举子正方形的边长。那么可以对这个矩形进行二维hash,就可以在O(1)的时候求出任意子矩形的hash值。然后判断这些正方形的hash值有没有相同的 部分就行了。可以用二分来判断。 需要注意的是行和列乘的hash种子值需要不同的质数, ...
分类:
其他好文 时间:
2017-05-01 15:07:02
阅读次数:
206
【bzoj1014】: [JSOI2008]火星人 用平衡树维护字符串的hash 然后询问的时候二分一下就好了 1 /* http://www.cnblogs.com/karl07/ */ 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cs ...
分类:
Web程序 时间:
2017-04-21 22:46:27
阅读次数:
212
题意: 思路: 在实现时SA可以用hash+二分代替,会多一个log BZ上跑的飞快,但UOJ上extra卡出翔,已经放弃 不过转C或者写SA没准就过了 看来转C迫在眉睫 ...
分类:
其他好文 时间:
2017-04-16 16:10:14
阅读次数:
225
POJ 2774 题意:求两个字符串的最长公共子序列。 总结:搞了半天还是不太理解,看着大神博客强行敲的。。而且还看到有hash+二分做的。 ...
分类:
编程语言 时间:
2017-01-27 07:18:02
阅读次数:
235
A:ans=n/3,因为8=1(mod7) B: C: D:二分+贪心,二分答案,即个数,check(mid)时贪心看能不能放成mid个; E:贪心,列出不等关系,然后写个高精度分数类; F:二分+hash,二分答案串的长度,check(mid)时把长为mid的串hash值处理出来排个序,再在第一个 ...
分类:
其他好文 时间:
2017-01-09 21:43:34
阅读次数:
197
题意:找一个出现了m次的最长子串,以及这时的最右的位置。 hash的话代码还是比较好写的,,但是时间比SA多很多。。 1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 using namespace std; 5 ...
分类:
编程语言 时间:
2016-12-17 14:28:59
阅读次数:
202