----Hash
文章平均质量分 62
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj1155 有根树的同构(树的Rabin-Karp)
这里简单说一下rabin-karp其实就是字符串hash算法,不理解的可以自行百度对于一颗树,我们可以将其变为一个括号序列,对这个括号序列作rabin-karp,让后就可以轻松判断同构了是不是很简单细节不多说,有一点必须注意:因为子树是无序的,所以dfs时必须对子树排序#include#include#include#includeusing namespace std;原创 2017-09-19 19:51:46 · 571 阅读 · 0 评论 -
51Nod1553 周期串查询
题目看这里我们发现需要动态维护一个字符串是否成周期根据border的一个简单性质,得出周期串的充分必要条件是,如果a[i..k]=a[j-k+1..j] 那么a[i..j]是以k为周期的串于是可以用线段树来维护哈希莫名其妙rank1..#include#include#include#define N 100010#define LL long long #def原创 2018-03-22 22:05:51 · 312 阅读 · 0 评论 -
Jzoj3648 【GDOI2014】beyond
当年还是too naive了啊,这么简单的题居然没做出来,太弱啦(讲真我那年还没上初中呢。。。)要是明年遇上这种题目就好了,嘻嘻嘻很显然的,最大的答案一定在两个串中出现过,那么我们来考虑如何找出这个串枚举一个x,我们用二分+hash求出a[x]和b[1]的lcp,设为len,让后再看a[1..x-1]和b[len+1,x+len+1]是否相等就好了因为哈希常数非常小jzoj跑得快,原创 2017-12-05 19:06:58 · 443 阅读 · 0 评论 -
Jzoj4061 字符串树
给一个树,每条边上面有一个字符串,每次询问两个节点路径上的字符串中有多少以给定的一个字符串为前缀显然是一个十分简单的题目,当时想多了打了树剖+Trie合并后来才意识到可以用差分+可持久化trie,过于愚蠢了。。。。。其实solution给了另一种解法,将所有字符串排序,哈希求lcp,让后存在一个数组里面,让后就可以用主席树了反正这题比较简单#pragma GCC opitm原创 2017-12-04 20:42:04 · 315 阅读 · 0 评论 -
字符串专题讲解
最近教练叫我去讲字符串专题,于是来写一写这方面的内容主要就讲以下几个吧:1.Kmp 2.Extended Kmp3.Trie4.AC Automation5.String Hash6.Suffix Array7.Suffix Automation8.Suffix Tree9.manacher10.Palindrome Automation11.Suf原创 2017-11-26 16:03:44 · 992 阅读 · 10 评论 -
Bzoj1014 外星人Prefix
题目传送门和上一篇题目几乎一样,不过还是这道题良心!bzoj好!poj慢到出*splay大法好! 两次AC不卡常!#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include#include#include#define N 400010#define LL long long#define son(x) (原创 2017-12-01 20:38:25 · 236 阅读 · 0 评论 -
Poj2758 Checking the Text
题目传送门经典的数据结构维护字符串哈希这里用了很慢很慢的splay各种T(也可能是死循环)不过没办法因为会写splay的能力还是要有的#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include#include#include#define N 100010#define LL long long#def原创 2017-12-01 19:06:27 · 374 阅读 · 0 评论 -
Jzoj5454【NOIP2017提高A组冲刺11.5】仔细的检查
nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上。另一天nodgd更无聊,就又画了一张。这时nodgd发现,两次画的顺序是不一样的,这就导致了原本的某一个节点u0在第一幅图中编号为u1,在第二副图中编号为u2。于是,nodgd决定检查一下他画出的两棵树到底是不是一样的。nodgd已经给每棵树的节点都从1到u进行了编号,即每棵树有n个节点。如果存在一个1到原创 2017-11-06 07:38:26 · 332 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin原创 2017-10-25 22:05:58 · 3734 阅读 · 0 评论 -
Jzoj4876 基因突变(红警系列)
邪恶的707刚刚从白垩纪穿越回来,心中产生了一个念头:我要统治人类! 但是统治人类是很庞大且复杂的一个工程,707尝试了洗脑,催眠,以及武装镇压都没能成功地统治人类,于是她决定从科学上对人类的基因进行研究从而达到他的目的。 707获取了人类的基因信息并尝试对基因进行实验。他发现可以把人类的基因看做一个只包含小写字母的字符串,并定义从头开始任意长度的基因为“源头基因”人类身上与源原创 2017-10-31 08:10:28 · 1330 阅读 · 0 评论 -
Jzoj5462【NOIP2017提高A组冲刺11.8】好文章
nodgd写了一篇文章,自认为这是一篇好文章。nodgd的文章由原创 2017-11-08 15:39:47 · 711 阅读 · 0 评论 -
Jzoj4614 字符串(待填)
(EMPTY)原创 2017-10-07 22:32:40 · 329 阅读 · 0 评论 -
Jzoj3443 压缩
看到数据范围我们发现可以用dp,设f[i][j]表示目前在第i位,最后一个循环串的长度为j的情况下,最短的长度那么显然,无论怎么样,有一种转移总是成立的,f[i][j]=min(f[i-j][k]+j+1),这相当于新开了一个循环节而另一个转移需要满足一个条件,f[i][j]=min(f[i-j][j]+1),当s(i-j+1,i)=s(i-j*2+1,i-j)时,这相当于在循环节里面加入一个*那么综合下来转移就是n^3的,我们加上两个优化1.令g[i]为min(f[i][k]),避免每次枚举k2原创 2017-09-25 19:39:21 · 275 阅读 · 0 评论 -
Jzoj2937 监听还原
Alice和Bob正在悄悄地给对方发信息,信息都是由英文小写字母组成的,他们约定,所有的字母都得经过一个字母表进行变换,以防泄漏。另一方面John却在监听。John发现,Alice和Bob通信的时候,总是先发送加密后的密文,然后紧接着发送原文。但是Alice和Bob似乎也意识到了似乎有人监听,有时候会随意中断了他们的通信。不过每次都是在发送完密文之后才停止传送的。也就是说,John原创 2017-09-21 16:16:14 · 449 阅读 · 0 评论 -
字符串专题1
.都是些bzoj原题辣,这几天刚做的 Bzoj4032有趣的dp题,也要用到各种自动机注意到题目的两个关键词“子串”和“子序列”考虑对A和B串建立后缀自动机和序列自动机序列自动机:可以识别一个序列所有子序列的自动机 想必学过自动机的各位都知道这个玩意怎么建,这里不再阐述让后我们考虑这些询问询问1:直接用SAM做类似LCS的做法求出A每个前缀和B匹配的最长距离,取最小+1询问2:...原创 2018-11-19 22:06:20 · 259 阅读 · 0 评论