
Hash
酷酷的Herio
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
小w的a+b问题和a=b问题
小w的a+b问题(二进制)考虑:−2147483648=2147483647+1−2147483648=2147483647+1−2147483648=2147483647+12147483647+2147483647=−22147483647+2147483647=-22147483647+2147483647=−2即:0111 1111 1111 1111 1111 1111 1111 11110111\ 1111\ 1111原创 2020-08-12 13:13:58 · 672 阅读 · 0 评论 -
#6233. Hash killer V(高精)
#6233. Hash killer V(高精)思路:答案取所有模数的最小公倍数,然后转换为262626进制这样hash=0hash=0hash=0,然后第一个串全部为aaa,满足字典序最小,妙啊,注意求gcdgcdgcd的时候要先对BignumBignumBignum取模。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mo原创 2020-07-21 07:38:59 · 552 阅读 · 0 评论 -
Hash Killer IV(欧拉定理&逆元)
Hash Killer IV(欧拉定理&逆元)前话:貌似网上没有做出Hash Killer IIIHash\ Killer\ IIIHash Killer III的人,可能是因为double hashdouble\ hashdouble hash 的正确性很高,不然double hashdouble\ hashdouble hash挂掉,hashhashhash算法就彻底宣告gggggg了,看到有IVIVIV版本,就过原创 2020-07-20 23:00:05 · 657 阅读 · 0 评论 -
Hash Killer II(卡掉单值hash)
Hash Killer II(卡掉单值hash)题意:构造一组卡单值hash,mod=1e9+7hash,mod=1e9+7hash,mod=1e9+7的数据。思路:如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。生日攻击:在nnn个数中随机选取,n\sqrt{n}n的概率选到相同的数。因为mod=1e9+7mod=1e9+7mod=1e9+7,mod<1e5\sqrt{mod}<1e5mod<1e5.考虑取n=1e5,l=30n=1e原创 2020-07-20 19:42:44 · 1031 阅读 · 0 评论 -
BZOJ.3097 Hash Killer 1(卡掉自然溢出法)
BZOJ.3097 Hash Killer 1(卡掉自然溢出法)题意:卡掉自然溢出法求不同长度为LLL的字符串个数做法。1.当basebasebase为偶数时,我们可以根据自然溢出法mod 264mod\ 2^{64}mod 264的原理,构造含2642^{64}264的hashhashhash值。如:656565个a→hash=0a\rightarrow hash=0a→hash=0,一个bbb后面646464个a→base64a\rightarrow base^{64}a→b原创 2020-07-20 10:23:21 · 2534 阅读 · 0 评论 -
哈希字符串复习
哈希字符串复习前话:这里复习一波哈希字符串,因为忘了,就是这么简单。方法1:自然溢出法。利用$unsigned\ long\ long $超出264−12^{64}-1264−1会自动对其取模的特性,我们考虑用[0,264−1)[0,2^64-1)[0,264−1)的范围的数表示一个字符串,类比二进制,我们用一个素数ppp定义一个ppp进制。有:hash[i]=hash[i−1]×p+idx(str[i])hash[i]=hash[i-1]\times p+idx(str[i])hash[i]=ha原创 2020-07-19 16:26:07 · 523 阅读 · 0 评论 -
All with Pairs(kmp&Hash)
All with Pairs(kmp&Hash)题意:给nnn个字符串sss,所有字符串的最大前后缀长度平方和。考虑先预处理一波所有字符串的后缀,用hashhashhash存起来,然后枚举每个字符的前缀的贡献,因为我们只需要求最长的前后缀,所以考虑去掉较短的重复出现的,这一步可以用kmpkmpkmp解决,因为最长公共前后缀的next[]next[]next[]子串仍然是前后缀,所以前面较短的前缀要减去后面较长的前缀个数。即:ans[nt[j]−1]−=ans[j]ans[nt[j]-1]-=a原创 2020-07-15 10:20:13 · 1035 阅读 · 0 评论 -
LC.41. 缺失的第一个正数
LC.41. 缺失的第一个正数因为要求时间复杂度O(n),O(n),O(n),且不额外开空间。所以考虑在原数组上操作。1.原地哈希:将原数组的下标作为一个桶nums[i]nums[i]nums[i]表示是否装有i+1i+1i+1。先预处理≤0\leq0≤0的元素全部置为nums.size+1nums.size+1nums.size+1,这样后面就不需要管了。然后abs(nums[i])<=nabs(nums[i])<=nabs(nums[i])<=n的元素对于的位置的元素置为负数即原创 2020-06-27 08:56:36 · 401 阅读 · 0 评论