![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Hash
,,
做一只大熊猫
让优秀成为一种习惯!
展开
-
AcWing 840. 模拟散列表(类似 map 的哈希用法)
题意#include <cstring>#include <iostream>using namespace std;const int N = 1e5 + 3; // 取大于1e5的第一个质数,取质数冲突的概率最小 可以百度//* 开一个槽 hint h[N], e[N], ne[N], idx; //邻接表void insert(int x) { // c++中如果是负数 那他取模也是负的 所以 加N 再 %N 就一定是一个正数 int.原创 2021-11-23 15:35:36 · 378 阅读 · 1 评论 -
H - Equations HDU - 1496(暴力for循环、折半枚举、应用hash优化折半枚举)
分析 题意a∗x12+b∗x22+c∗x32+d∗x42=0a*x1^2 + b*x2 ^ 2+c*x3 ^ 2+d*x4^2=0a∗x12+b∗x22+c∗x32+d∗x42=0,给我们一个等式其中 a、b、 c、 d 均为已知变量,其中x1x2x3x4x1 x2 x3 x4x1x2x3x4均为未知变量,他们的范围均在[-100,-1]与[1,100]之间,让我们找出使方程成立的解的方案数量 思路一我们用 用三重for循环枚举,前三个变量的值,在[1,100]范围内,最后确定第4个原创 2020-08-23 17:49:58 · 168 阅读 · 0 评论 -
G - 前m大的数 HDU - 1280(水题)
分析 题意给我们n个数(n<3000,每个数不超过5000),n个数中任意两个数,相加存在 n*(n-1)/2个结果,让我们输出前m大的数,我们将 相加的结果作为 下标(因为相加的结果<=10000),统计下标出现的次数, 在统计的完之后在 同 10000 向0 遍历 统计出前m大就行了代码#include <iostream>#include <stdio.h>#include <string.h>#include <math.h原创 2020-08-23 17:22:19 · 148 阅读 · 0 评论 -
F - Censor SCU - 4438(栈 + hash)
分析 题意给我们一个字符串 t,又给我们一个字符串s,让我们删除 s中第一个的t,如果在删除之后的s字符串还存在t那么我们一直删除,直到删除之后不在 出现t为止,输出s剩余的内容样例abcaaabcbc 思路这题的巧妙之处是使用了栈的特性(括号匹配题型),而Hash的作用是通过将子串转化为 hash值,同判断hash值相同,我们就将相同的这个子串从 栈 中弹出,然后继续往里面添加字符串,继续进行 相同字符串的匹配(这个匹配类似于 括号匹配题型)过程模拟,我们假设有一个 栈st原创 2020-08-23 17:06:26 · 1260 阅读 · 0 评论 -
C - Seek the Name, Seek the Fame POJ - 2752(枚举+hash)
分析 题意给我们一个s,让我们判读相同长度的 前缀和后缀子串的长度有哪些,从小到大输出这些长度 思路预处理字符串的hash值,暴力枚举长度,通过hash值判读相同代码#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <string>#includ原创 2020-08-23 15:43:31 · 184 阅读 · 0 评论 -
B - Power Strings POJ - 2406(暴力枚举+Hash)
分析 题意判断某个字符串的循环节是几位 思路预处理字符串的hash值,从大到小暴力枚举 循环节位数,通过通过 for循环判断每一个定长度的hash值是否相同代码#include <iostream>#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <string>#include &原创 2020-08-23 15:35:47 · 173 阅读 · 0 评论