遇到hash的题目默默流下眼泪😥
小w的a=b问题
题意:给你两个数组a和b,长度为n和m,问你$\prod_{i=1}^{n}a_i ! $是否等于$\prod_{i=1}^{m}b_i ! $,其中$1 \leq n,m \leq 10^5$,$0 \leq a_i,b_i \leq 10^5$
初次遇到这种题目,我以为是一个推公式的题目,把我整懵了,果然数据结构的知识还是灰常重要啊[点头]
思路:用两个比较大一点的质数作为模系,然后计算每个阶乘$(0 \sim10^5)$所在模系hash值,用两个可以保证不冲突的几率大大减小。
1 |
|
字符串hash
上面是数字的hash,而字符串的hash就是一个$O(n)$的预处理。
1 | typedef unsigned long long ull; |
手写hash,可以替代map加速查询
1 | struct Hash{ |