字符串:hash
文章平均质量分 91
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
URAL - 1486 Equal Squares 哈希、二维hash、二分、卡大素数
题意:给出n个长度为m的字符串(n,m <= 500),然后问选取一个最大的正方形,使得有2个正方形区域的字符串是相同的,求出这个最大正方形的边长即两次出现位置的正方形左上角坐标。哈希、二维hash、二分、卡大素数题目直接就暗示着用哈希来做 ^_^,然后可以把每个字符串分别用同一个大素数hash掉,然后二分边长,check的时候,检查每个长度为mid的正方形是否再次出现,检查的时候再去另一个大素数pt,把横向的第一次哈希得到的一段字符串的哈希值作为一个元素,把这些元素再次进行哈希,然后在纵向的原创 2017-03-12 15:10:28 · 1244 阅读 · 0 评论 -
Opencup 010352 Problem 5. Autocomplete 哈希+bitset
题意:定义2个字符串如果忽略大小写则完全相同,如果区分大小写则只有不大于k个位置不同,则认为这2个字符串是“相似的”。给出w个(1<=w<=1000)个长度小于2000的模式串,然后q次询问(1<=q<=1000),每次输入一个长度小于2000的字符串问在那n个模式串中有多少个与其互为“相似的”。哈希+bitset这里2e6*(26+26)的复杂度,所以AC自动机基本上直接用不上了,如果只存小写,则虽然勉强够内存,但其实还是很可能会MLE的,并且也解决不了问题。所以想到用哈希,首先对于每个模式串在不原创 2017-05-30 20:27:45 · 1310 阅读 · 0 评论 -
UESTC 1703 一道更简单的字符串题 哈希+枚举
求出最小循环串。哈希+枚举先把字符串哈希,然后从ans = 1 ~ n进行枚举,check的时候枚举每个hash(i, ans) == hash(0, ans),且对于最后一段长度不到ans的 hash(i, len-i) == hash(0, len-i),因为是从小到大枚举,所以一旦有ans满足,则就是答案。这是一个调和级数,故nlin(n)。时间复杂度 O(nlin(n))空间复杂度 O(n)原创 2017-07-18 21:56:21 · 1403 阅读 · 0 评论 -
UESTC 1705 咸鱼钟大爷 随机化+哈希
题意:给出一个p和mod,求出一对哈希冲突的字符串(长度可以不同)随机化+哈希随机生成字符串,然后哈希,然后判断f[hashval]是否出现过,如果出现过就找到了哈希冲突的字符串。如果枚举到MAXN还是没有找到就换一个哈希种子重新找,这里由于oj把ctime禁用了,所以可以每次定义一个变量,然后用这个变量的地址作为哈希种子。关于可以使用随机化的原因,请搜索“生日攻击”百科,里面有详细证明。复杂度 O(n)原创 2017-07-18 22:12:49 · 816 阅读 · 0 评论 -
Gym - 101164K Cutting 哈希+枚举
题意:给出字符串A和B,字符串A大小写不区分,字符串B由小写字母构成,构成AB的每种字母的个数相同,询问是否能把B切成3份,重构出字符串A,如果能则输出那三份子串,并按照A的顺序输出。哈希+枚举刚开始的时候,以为可以用KMP来过,白白TLE了2发才明白,自己走远了,这题是合适的做法是hash。O(n^2)的枚举字符串B 的0~i-1 为第一段,i~j-1 为第二段,j~n-1为第三锻,然后每次借用这三段的哈希值去和A串匹配,这三段有A(3,3) == 6种排列方式,所以枚举这6种排列,之后借用它们原创 2017-07-25 23:16:17 · 1154 阅读 · 0 评论