Icefox的博客

生活不止眼前的苟且,还有诗和远方。

排序:
默认
按更新时间
按访问量

bzoj4943 [Noi2017]蚯蚓(Hash+复杂度分析卡常)

做法较为明显,直接模拟即可。Hash比较字符串。 复杂度分析一波,如果没有2操作的话,复杂度显然是O(nk)O(nk)O(nk)的,考虑有2操作的话,分裂两个蚯蚓的复杂度是O(k2)O(k2)O(k^2),因此而带来的合并复杂度也是O(ck2)O(ck2)O(ck^2)的,因此总的复杂度就是O(...

2018-06-28 15:27:52

阅读数:38

评论数:0

bzoj4650 [Noi2016]优秀的拆分(计数+SA)

好久没写SA了的赶脚qaq 考试时写了95分的O(n2)O(n2)O(n^2)暴力hash 我们考虑枚举中间分割点i,以i结尾的AA串个数*以i+1开头的AA串个数就是对答案的贡献。 于是我们只需要处理出f[i],以i结尾的AA串个数 g[i],以i开头的AA串个数这两个数组。 我们考虑枚...

2018-06-27 23:07:09

阅读数:31

评论数:0

bzoj4199 [Noi2015]品酒大会(SAM+线段树)

这回换了个SAM写,SA的做法见:portal 一开始以为可以做到线性…结果写了之后发现还是要挂棵线段树… 我们考虑对反串建SAM,搞出后缀树,这样任意两个后缀的lca就是他们的lcp。于是我们可以在每个lca处统计答案。 不过一个点可能会覆盖一段长度区间,所以要区间修改答案。 复杂度O(...

2018-06-26 14:16:27

阅读数:37

评论数:0

CF346B Lucky Common Subsequence(LCS+kmp)

给定三个串A,B,C,求串A,B的lcs,要求不能包含C串作为子串。 f[i][j][k]表示A串前i个,B串前j个,lcs匹配到了C串的第K的个字母的lcs 转移和普通的lcs差不多,就是在往lcs上多加一个字符时,需要求一下新的lcs匹配到了C的那个字符,我们kmp预处理一下next数组即...

2018-06-25 20:33:50

阅读数:29

评论数:0

bzoj3676 [Apio2014]回文串(manacher+SAM)

首先对原串建SAM,并处理出每个点所代表的串出现的次数sz。 用manacher搞出本质不同的回文子串,去SAM上查询出现次数即可。 在SAM上定位这个串的时候倍增查找即可。 复杂度O(nlogn)O(nlogn)O(nlogn) 注意我这样manacher没有处理单点的情况… #inc...

2018-06-22 15:39:56

阅读数:42

评论数:0

bzoj2865 字符串识别(SA+线段树)

与bzoj1396基本一样,不过这题卡内存,SAM跑不过去,只能写SA。 不过蒟蒻懒得写了qaq就不放代码了…

2018-06-18 23:10:56

阅读数:29

评论数:0

bzoj1396 识别子串(SAM+线段树)

我们建SAM,搞出parent树。 然后考虑哪些串是可能的识别子串,显然是那些|Right|=1的节点所代表的串。考虑这样的节点x,它的mn=mx[par[x]]+1,mx=mx[x],结尾字符为原串第r个。则他会对r-mn+1~r贡献一个mn的可能答案,对r-mx+1~r-mn贡献一个 -x...

2018-06-18 11:23:17

阅读数:91

评论数:1

bzoj1195 [HNOI2006]最短母串(ACAM+状压+bfs)

建出ACAM,然后装压到每个点的串匹配状态。 最短的字典序最小的,于是我们贪心地从小到大bfs。 复杂度O(nm2n)O(nm2n)O(nm2^n) 这题卡内存真是酸爽【再见】 #include <bits/stdc++.h> using nam...

2018-05-28 14:46:27

阅读数:53

评论数:0

bzoj5365 [Lydsy1805月赛]回文树(树上Hash+暴力)

因为字符随机,所以同样的字符很少,我们对于同样的字符内部暴力两两枚举,看x->y是不是一个回文串。 怎么看呢?蒟蒻我不会… 比赛时胡乱写了一个假的lct维护树上hash值。 一开始没维护sz,它过了…过了… 发现后改过,它RE了…缘来是我写挂了qaq 改对过...

2018-05-27 22:29:56

阅读数:172

评论数:0

bzoj4820 [Sdoi2017]硬币游戏(期望与概率+Gauss+kmp)

#include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define N 310 inline int read...

2018-05-26 23:23:17

阅读数:50

评论数:0

bzoj5337 [TJOI2018]str(Hash+dp)

用hash处理字符串匹配,变成若干线段接力覆盖的问题,瞎dp一下就好了qaq 复杂度O(m(len+n))O(m(len+n))O(m(len+n)) #include <cstdio> #include <cstring&am...

2018-05-21 23:22:10

阅读数:90

评论数:0

hdu4117 GRE Words(ACAM+fail树+线段树)

首先我们有如果i< j,且sisis_i为sjsjs_j的子串,那么有转移f[j]=f[i]+w[j]f[j]=f[i]+w[j]f[j]=f[i]+w[j] 其中f[i]f[i]f[i]表示以第i个串结尾的最大答案。对f[i]f[i]f[i]取max即为答案。 我们考虑...

2018-05-20 21:24:59

阅读数:45

评论数:0

luogu3805【模板】manacher算法

敲敲敲,敲板子。

2018-04-28 15:20:04

阅读数:56

评论数:0

loj103 子串查找(kmp/Hash模板题)

KMP模板题 #include <cstdio> #include <cstring> #include <algorithm> #include &amp...

2018-04-28 13:49:56

阅读数:39

评论数:0

bzoj4310 跳蚤(SA+二分答案+贪心)

原题描述有误,应该是把原串分成最多k个子串,然后在每个子串中挑出字典序最大的子串,使得这些串中最大的字典序最小。我们二分答案是第K小子串,用SA搞出这个串的位置,然后去贪心判定是否可行,即是否存在一种划分使得所有子串都小于等于这个串。如何贪心判定呢?首先如果有一个s[i]>s[ansl],则...

2018-04-28 12:43:13

阅读数:67

评论数:0

bzoj5073 [Lydsy1710月赛]小A的咒语(SA+lcp+dp+贪心)

考虑dp,f[i][j]表示A串前i字符分成j段能匹配的最大B串前缀长度。 那么如果i+1不选,转移到f[i+1][j]如果i+1选,则我们可以贪心的尽量多匹配一些,即匹配t=lcp(i+1,f[i][j]+1)个,转移到f[i+t][j+1]我们SA+RMQ预处理一下,O(1)查询lcp即可。...

2018-04-27 22:01:05

阅读数:80

评论数:0

bzoj4567 [Scoi2016]背单词(Trie+贪心)

把串反过来插出Trie树。 可以发现,一定要先把自己得祖先节点都插进去再插自己。 我们只保留根节点和所有单词结尾节点,得到一棵树。我们现在的问题就转化为: 给定一棵树,给每个点标号,要求每个点的标号比自己的父亲的标号要大,求最小化∑xa[x]−a[fa[x]]\sum\limits_xa[x...

2018-04-27 11:08:24

阅读数:50

评论数:0

bzoj2780 [Spoj]8093 Sevenk Love Oimaster(SAM+dfs序+BIT)

这个问题和bzoj3881基本一模一样。 3881是拿ACAM+树链的并写的,先把询问串建出ACAM,然后拿文本串去更新答案。这道题呢是拿SAM+dfs序+离线+BIT做的。先把文本串建出SAM,在每个点上挂一个vector记录这个节点所属的文本串。然后对于每一个询问串,先跑出它在SAM上的代表...

2018-04-23 21:51:00

阅读数:57

评论数:0

bzoj4032 [HEOI2015]最短不公共子串(SAM+序列自动机+bfs)

序列自动机就是可以识别所有子序列的自动机,点数O(n)O(n),边数O(26n)O(26n) 每个点的par就是这个点代表的字母上一次出现的位置,因此要记录last[i],表示字母i上一次出现在哪,然后每一个点的儿子i指向他后面出现的第一个字母i的位置。求A最短的子串/子序列不是B的子串/子序列...

2018-04-23 11:02:49

阅读数:63

评论数:0

bzoj4566 [Haoi2016]找相同字符(SAM)

我们拿A串建出SAM,基数排序处理出拓扑序,算好|Right|。 用B串在SAM上跑,匹配到一个点p时计算当前匹配答案就是(len-mn[p]+1)*ri[p]。当然答案中还应该加上(mx[p]-mn[p]+1)*ri[p],对于所有的p在par树上的祖先,但是我们不能每次都直接跳父亲,这样复杂...

2018-04-23 08:48:36

阅读数:61

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭