
字符串总是很乱
stone41123
一名苦逼的OIer,欢迎交朋友。。。
展开
-
字典树--Xor问题
字典树大家都知道吧,如果不知道可以看这里,我的模板写得还是不错的: 字符串–Trie树(字典树)接下来我们先看一个问题,通过这个问题来了解Xor这个运算的基本性质: 洛谷 P2420 让我们异或吧 题目大意:给定一棵带权树,多次询问两点之间边权异或和。 性质:a^x^x=a,其中^代表Xor运算,证明略。 利用这条性质,我们可以任取一点为根,通过一次dfs算出每个点到根节点的异或和val[原创 2017-09-18 12:11:57 · 596 阅读 · 0 评论 -
字符串--manacher算法(回文串匹配)
模板传送门 manacher,也叫马拉车,是一个回文串匹配算法,代码短小精干,也好理解。 我这里放一个讲的好的人的blog:manacher 模板题代码:#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int n,ans;char t[52000005],in[21000005];int原创 2017-09-19 09:33:00 · 744 阅读 · 0 评论 -
字符串--Trie树(字典树)
关于这个字符串的数据结构我就不多说什么了,不知道的可以戳这里. Trie树在OI中应用广泛,时间优秀,缺点就是空间占用大。 (下文中我们将字符集大小成为kk) Trie支持O(nk)O(nk)建树,O(k)O(k)插入,查询,删除。 可是如果二维数组存储的话,就要耗费26n26^n的空间,基本无法承受。 空间上我们可以用指针动态分配内存来优化,减少内存的浪费。 Trie树还有一点好处,就原创 2017-08-11 01:02:32 · 592 阅读 · 0 评论 -
字符串--AC自动机
终于过了一次,以前每次都错。。。 我讲的不好,但是我找到一个讲的好的,大家看看:blog 下来贴个代码:(洛谷 P3796)#include<bits/stdc++.h>#define ll long longusing namespace std;inline int idx(char c){ return c-'a';}int tot,ans;int ch[1000001原创 2017-09-02 14:07:48 · 189 阅读 · 0 评论 -
[bzoj1212] [HNOI2004]L语言(trie+dp)
传送门 我们可以建一个trie树,然后dp 状态:f(x)表示1f(x)表示1~x能否被拼出来x能否被拼出来 然后我们就可以在trie树上暴力地边走边判断,当f(x)=1f(x)=1时用它来推其他状态。 边界:f(0)=1f(0)=1 代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#incl原创 2017-10-06 20:52:32 · 359 阅读 · 0 评论 -
[bzoj1009][HNOI2008]GT考试(dp+矩阵加速+KMP)
传送门 这个题dp还是很好想的。这个题dp还是很好想的。 f(i,j)表示第i位,模式串匹配到第j位的方案数f(i,j)表示第i位,模式串匹配到第j位的方案数 f(i,j)=∑k可转移到jf(i−1,k)f(i,j)=\sum_{k可转移到j}f(i-1,k) 如果你已经构造好一个矩阵A,A(i,j)代表i是否可以转移到j如果你已经构造好一个矩阵A,A(i,j)代表i是否可以转移到j 就可原创 2017-10-05 18:08:00 · 313 阅读 · 0 评论 -
[jzoj3126]【GDKOI2013选拔】大LCP(字典树解LCP)
这个题就不传送门了,估计大部分人都看不了。DescriptionLCP就是传说中的最长公共前缀,至于为什么要加上一个大字,那是因为…你会知道的。首先,求LCP就要有字符串。既然那么需要它们,那就给出n个字符串好了。于是你需要回答询问大LCP,询问给出一个k,你需要求出前k个字符串中两两的LCP最大值是多少,这就是传说中的大LCP。Input第一行一个整数N,Q,分别表示字符串个数和询问次数。接下来N原创 2017-10-06 16:45:21 · 289 阅读 · 0 评论