哈希
AKone123456
这个作者很懒,什么都没留下…
展开
-
矩阵---------------------------------------------思维(二维hash模板)
解析:二维哈希模板Sp[b]-hip[a*b]+h[j]#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N=1e6+1000;int n,m,a,b,q;char str[20005];ull h[3005][3005];ull p[N];ull P=131;ull get(ull f[],int l,int r){ return f[r]-f[..原创 2020-05-23 16:17:44 · 170 阅读 · 0 评论 -
匹配统计----------------------------思维(二分+hash)
解析:把A和B串哈希。然后枚举A串的后缀,然后二分A串和B串匹配的长度即可时间复杂度O(nlogn)#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N=2e5+10000;char a[N],b[N];ull P=131;ull h1[N],p1[N],h2[N],p2[N];int n,m,q,x;int cnt[N];ull get_h1(int..原创 2020-05-23 11:41:25 · 181 阅读 · 0 评论 -
密码系统-------------------------------思维(二分+哈希)
解析:本题只需解决一个问题,剩下模拟即可问题就是如何快速求解最长公共前缀。很经典的套路。我们先把长度为k的字符串哈希,然后二分求解最长公共前缀。然后最长公共前缀的下一位比较一下就可确定两个字符串的大小,然后剩下的模拟哈希即可。#include<bits/stdc++.h>using namespace std;typedef unsigned long long ull;...原创 2020-04-20 15:16:52 · 195 阅读 · 0 评论 -
相似的子串--------------------------------------------思维(哈希+二分)
解析:题目本质让我们求解的是在主串中选出k个不相交的子串。这个子串的最长长度是多少。其实答案具有单调性,二分求解。我们首先字符串哈希预处理,然后二分答案判断部分:用两个哈希表分别记录长度为len的子串位置和长度为len的子串个数,分别记为V和T每次判断长度为len的子串,判断与上一个记录的位置是否合法,合法就更新V和T#include<bits/stdc++.h>us...原创 2020-04-11 15:51:02 · 111 阅读 · 0 评论