
HASH
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1461 Beads
1461:Beads 不过感觉hash的题和KMP的有类似的地方? #include <bits/stdc++.h> typedef unsigned long long ll; using namespace std; int n,a[200005],ans[200005],total=1; ll p[200005],suml[200005],sumr[200005],b=1000000007; map<ll,int>mp; int main() { ios::sync_w原创 2021-08-18 16:13:46 · 209 阅读 · 0 评论 -
1459 Friends
1459 Friends 朋友啊!~ 嗯?貌似这个题挺变态的? 首先我们知道,如果这个字符串得长度是一个偶数,那么肯定不存在S #include<iostream> #include<cstdio> #include<string> #include<cstring> using namespace std; typedef unsigned long long ull; const int SIZE=400010; const int base=131; u原创 2021-08-18 14:15:50 · 282 阅读 · 0 评论 -
1458:Seek the Name, Seek the Fame
1458:Seek the Name, Seek the Fame 哎哎哎? KMP的模板?原创 2021-08-18 12:55:59 · 311 阅读 · 0 评论 -
1457 Power Strings
1457 Power Strings 嗯?貌似这个题正解是KMP啊 题意不难理解,就是找一个字符串的最长循环节的长度 然后我们把每一段的也就是类似于前缀的东西维护一下hash值 接下来枚举每一段,用函数核查一下,至于核查函数其实和枚举差不多,没有什么难得地方,从这里可以看出来,hash得优化并不是从查找上优化,而是从长度上优化 #include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; const i原创 2021-08-17 20:35:06 · 344 阅读 · 0 评论 -
1456 图书管理
1456 图书管理 很明显,这是一个字符串hash的题 还有就是说,这里会运用一个类似于邻接表的方式来存储一下每一个字符串,满足插入的操作 感觉HASH不难,就是在确定进制和模数 #include <iostream> #include <cstdio> #include <cstring> #include <string> using namespace std; char op[10]; char book[400]; int n; const int原创 2021-08-17 19:52:14 · 418 阅读 · 0 评论 -
1379 八数码难题
1379 八数码难题 这道题我本来想使用HASH+MAP来练练手,结果发现用A*+ID更简单 也就是说,这道题使用的是A算法+迭代加深算法进行一个估价函数和固定层数再加上优化的时间,来AC这一道题 首先,我们输入的这个起始状态用数组存储,不过记住目标状态的数组要多加一圈零,否则会导致移位时的越界现象,这样更加方便 然后进行一个特殊判断check也就是如果当前的起始状态和目标状态已经相等,就不必要进行下面的操作了 然后循环枚举搜索的深度,也就是迭代加深,接下来A算法进行搜索 A*算法的搜索是一个关键,在这里我原创 2021-05-15 10:49:44 · 200 阅读 · 0 评论 -
1381 单词背诵
1381 单词背诵 首先我本来想拿一个部分分60,可以不适用hash,用桶来进行骗分 结果我发现,我错了,这道题真的不太简单 首先我们先来说说题意: 意思就是说先输入一些单词,然后再输入一些单词,在m个单词中需要找到一连串单词,必须包含我要背的最多的,还得是长度最短的,其实这道题已经暗示我们用hash了 这道题难理解,我看了好长时间才做出来 这道题的思想就是每次输入文章单词的时候对它判断需不需要背然后统计出现次数,统计完就将答案1加一意思就是背的单词数加一,然后就是计算长度,计算长度需要将当前长度i减去l+原创 2021-05-03 22:50:39 · 153 阅读 · 0 评论 -
Trie
Trie 一、引入 这些都是官方话,字典树其实是干嘛的?就好比字典是干啥的,是用来查汉字的(打人用的 )那么字典树就是用来查单词的,也就是用来查询字符串的 我这里要抱怨一下,洛谷没有模板题 我们先看一道题: 给定n个单词m个询问,每次询问一个前缀,问答这个询问是对少单词的询问 答:map!把每个单词拆开 emmmmmmm 听取TLE声一片 这就需要一种高级数据结构了——Trie 原理 这就是Trie的画法 这里可以看出: 1.Trie用边表示字母 2.根节点是空的,因为便于插入查找 3.每一个单词结束之后原创 2021-05-03 16:25:32 · 91 阅读 · 0 评论 -
4503 企鹅QQ
4503 企鹅QQ QQ给了你ccf多少钱,我微信给你双倍(逃 记得前几天在夏令营的时候还是一个绿题,这就升蓝题了? 提炼题目 当以两个字符串,当且仅当|a|=|b|并且恰好只有一位是不同的,这样叫做两个字符串相似 现在给问给定n个长度为l的字符串,问两两之间有多少相似的字符串 emmmmm 我这个菜鸡不会啊 不过感觉hash还是比线段树树状数组这些东西好的,真的,最起码有点思路了 在这里补充一个字符串小常识,用cin输入字符的时候会自动过滤空格,用scanf会包括在里面,zp老师之前就告诉我们 还有就是打原创 2021-08-11 14:30:58 · 135 阅读 · 0 评论 -
2879 Tallest Cow S hash
2879 Tallest Cow S hash模板题,注意统计hash值的出现,需要最后利用差分的思想进行更新,一会用差分数组来更新一下 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<map> #de原创 2021-08-10 20:28:37 · 148 阅读 · 0 评论 -
1455 Oulipo
1455 Oulipo 给定两个字符串,求第一个字符串在第二个字符串中出现了几次,这不就是KMP?(为什么我总觉得是KMP,可能是我喜欢吃烤馍片吧) 其实hash还是挺简单的,就是一个模板的题 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int SIZE=1e4+5; char a[SIZE],b[SIZE]; int p[SIZE]; int hash[SIZE]; int base=27,m原创 2021-08-10 20:17:55 · 293 阅读 · 0 评论 -
1102 A-B数对
1102 A-B数对 这道题我早就做过了,但是因为今天研究了hash所以必须得来复习复习 我们得先明白题意,就是说输入n c 然后输入n个数枚举ab,是使得a-b=c O(n^2)思路 这种思路是暴力进行枚举,朴素算法二重循环,这样做肯定会超时 O(nlogn)思路 利用二分思想一次循环枚举b,中间二分找c然后再相加判断a就好了 O(n)思路 优化一点的算法,就是用桶保存每一个数,这样的话我们只需要枚举b,然后判断一下c是不是存在就好了,这样时间复杂度会很低,但同时空间复杂度会很高,就会MLE hash h原创 2021-04-24 22:12:07 · 442 阅读 · 0 评论 -
2957 Barn Echoes G
2957 Barn Echoes G 同时是一个字符串的前缀和另一个字符串的后缀的字符串,你确定这不是一个KMP? 大家说这个题本来可以用函数乱杀过去,但是既然学习了hash,就必须训练,不是吗 说说思路 1.先求两个字符串的前缀hash值 2.枚举重复的部分 3.因为题目说的,两个字符串的重复部分指的是同时是一个字符串的前缀和另一个字符串的后缀的字符串,所以,要判断两种情况 一个是第一个的前缀和第二个的后缀,一个是第一个的前缀和第二个的后缀 比较之后取最大值 #include<bits/stdc++原创 2021-08-10 19:46:43 · 134 阅读 · 0 评论 -
4305 不重复数字
4305 不重复数字 啊,就是将数字去重,我在想,如果去重函数会不会… 结果,我…还是乖乖的去打hash了 这个题就是一个模板hash题,我好开心 1.开一个hash表,用来存hash值 2.t组数据,处理每一组数据都需要清空hash表 3.对于每一个数据,一次读入n个数,每一次对一个数进行一个处理,如果存在hash表中,那么不用管了,不存在的话,就将它加入hash表中,然后将其输出就行 好简单 但是hash表的初始值需要赋值为一个乱七八杂的数就行 #include<bits/stdc++.h>原创 2021-08-10 19:14:48 · 110 阅读 · 0 评论 -
字符串hash
字符串hash 看一个问题,有m个字符串,共有q个询问,询问两个字符串是否完全一样 假设每一次都比较两个较长的字符串,那么每次比较都会需要很长的时间,会炸的 我们将字符串转化为一个数字,依据10进制方法 但是可能字符串较大的数字会非常大,存不下来 一个欺骗的方法就是找一个很大的数p最好是质数,只记录后数字对p取模 这里注意,不能把a看作0,不然a会和aa相同滴 取的进制也要和p互质才行 #include<cstdio> #include<iostream> #include<a原创 2021-08-10 18:32:02 · 83 阅读 · 0 评论 -
HASH
HASH 内含HASH重要知识点,非战斗人员请立即撤离。 HASH这个东西我们早就接触过,研究过,但是不能理解。所以我今天抽出来足够的时间来学习。 我们做题的过程中,通常会对线性表进行查找操作,顺序查找就依次遍历是否相等,知道相等然后返回索引;在有序中我们就通过二分查找 https://blog.csdn.net/wzz953200463/article/details/105188395?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_ba原创 2021-04-24 15:06:19 · 105 阅读 · 0 评论