- 博客(57)
- 收藏
- 关注
原创 power oj 2790: GAUSS 2014(AC自动机fail数组运用+矩阵快速幂)
只有一个模式串,因此不用建fail数组。直接建前缀树进行匹配即可。
2020-02-08 13:51:45
352
3
原创 DNA Sequence POJ - 2778(AC自动机fail数组+矩阵快速幂)
首先我们需要构建一个矩阵M[i][j] 储存从字典树上的i点到j点只走一步并且走的方式没有疾病有多少种方式。Mn就是从i到j走n步有多少种方法…那么我们对M使用矩阵快速幂
2020-02-08 01:19:06
216
原创 Matrix Matcher UVA - 11019 (二维AC自动机)
对每一行建立AC自动机,去匹配模式串。如果匹配成功,那么就有ans[当前行数-匹配成功的行数][当前点在该行位置-匹配矩阵的长度]++
2020-02-07 14:03:38
332
原创 病毒侵袭持续中 HDU - 3065 (AC自动机统计模式串出现次数)
将模式串添加进入字典树时,纪录每个模式串在字典树上终点的位置。对文本串进行匹配时,每匹配到一个模式串,那个模式串出现的数量增加1。
2020-02-06 17:31:10
168
1
原创 Revolving Digits HDU - 4333(扩展kmp)
将数字复制一次,插入到原数字的末尾。如123--->123123那么从新数字的第2位开始向后走len,得到的就是原数字经过这些操作可能得到的数字。
2020-02-02 22:09:45
150
原创 Oulipo HDU - 1686 (使用扩展kmp进行讨伐!)
使用扩展kmp.构建一个新字符串k=t+▲+s ▲为分隔符,保证不会影响s求z函数。对k使用扩展kmp(~~效果拔群!~~ )如果k中有z[i]=len(t)那么就说明t在s中出现了一次。
2020-02-02 20:43:42
129
原创 扩展kmp算法(z函数)
定义资料来源:https://oi-wiki.org/string/z-func/初号版本:O(n2)就是纯暴力做法void get_z(char *str){ int len=strlen(str); z[0]=0; for (int i=1;i<len;i++){ int j=i; while (str[j]==str[...
2020-02-02 20:26:30
805
1
原创 Censor SCU - 4438 (hash 哈希做法)
字符串问题考虑hash做法。如何以**常数级复杂度**去check以现在找到的这个点为终点是否可以构成字符串w?
2020-02-01 21:30:49
5533
原创 Cyclic Nacklace HDU - 3746 (前缀数组 kmp)
用前缀数组可以求得初始字符串的最小循环节。最小循环节=(原字符串长度-末尾前缀数组值)
2020-02-01 17:44:26
158
原创 关于前缀函数的一点小东西
前缀函数定义定义来自于:OI Wiki第一个版本:纯暴力。时间复杂度O(n3)void get_pi(){ int len=strlen(str); for (int i=0;i<len;i++){ for (int j=0;j<i;j++) { int flag=0; for (int k=0...
2020-01-31 20:15:12
230
原创 Educational Codeforces Round 81 (Rated for Div. 2)
打得不是很理想的一次cf呜嘤呜嘤呜嘤呜嘤呜嘤
2020-01-31 01:36:19
126
原创 power oj2610: 判断回文串(hash入门模板)
Description某天吃饭的时候,FM有了一个帅气idea,其实是个傻逼题?题意很简单,给一个字符串判断是否是回文串?PS:如果一个字符串正着读和反着读都一样,那么这个字符串为回文串,比如aba,cc,cddc为回文串,而ac,acda,adA则不是回文串。Input多组输入,第一行为n,代表字符串的长度。第二行为这个字符串,该串仅包含大小写字母。Output是回文串输出"YES"...
2020-01-29 13:07:58
661
原创 R2D2 and Droid Army CodeForces - 514D (rmq+二分)
可以发现,一个区间里的机器人是否被击败,只与这个区间的最大值属性有关。所以可以用rmq储存区间属性最大值。最后使用2分查找合法(消灭这个区间里的机器人且费用不超过k)且区间最长的武器分配方案。
2020-01-21 01:19:05
278
原创 Picture hdu-1828 扫描线求面积+一组hack数据 为什么会wa?有可能是因为这个!两种方法!
我们扫描线时,需要将边从升序排序。如果两个边高度相同呢?这时候边的顺序就有可能会导致bug。
2020-01-19 09:53:14
377
原创 Super Mario HDU - 4417 (可持续化值域线段树)(可持续化线段树+值域线段树)
求[l,r]里的小于X的值,相当于求[1,r]里小于x的值,减去[1,l-1]里小于x的值。每次输入数字时,都用可持续化线段树。线段树用值域线段树就可以了。记得离散化。
2020-01-16 10:56:42
272
原创 Knight Tournament(合并区间)
一开始想用线段树。但Me了,应该时dfs的时候超了。最后去搜博客发现了区间并查集,先收藏了。其实只要记录他的上一个值一次就是祖先了,所以不需要更新根节点。重点是区间合并,qwe起到跳跃作用.
2020-01-12 20:35:49
163
原创 Nonfibonacci numbers(数位dp)
Fibonacci numbers — well-known integer sequence, where F0=0, F1=1 and Fn=Fn−1+Fn−2 for n>1.Lesha doesn’t like this sequence and all the numbers x, such that we can get positive Fibonacci number by...
2020-01-12 20:17:34
252
原创 Buggy ICPC(思维+打表)
有一个字符串当你键入元音(a.e.i.o.u)时,字符串会在输入这个元音后翻转。比如你输入eca,字符串会变成ace。现在在给你一个字符串s,让你求有多少种输入的方式,可以使最后的字符串变为s。
2020-01-12 20:09:51
381
1
原创 2020寒假培训期望dp(概率dp)题解
概率期望dp一般都是逆推。正推的话要计算期望的期望,非常麻烦!一般来说,总有一个末状态是一定会发生,从这个状态开始逆推可以简化许多问题。期望dp和普通的dp的不同处。普通的dp可能纪录的是dp[i]到了i这个状态时的最优解,而期望dp一般纪录dp[i]以i这个状态为起点能得到的最优解。
2020-01-11 16:50:09
1626
原创 图论-非严格次小生成树
定义:对于一个无向图G(V, E),其定义了边权为W(u, v),若T为他的一颗最小生成树,那么我们假设存在一颗生成树T1,不存在任意一颗G的生成树T2满足W(T) <= W(T2) < W(T1)(此为非严格次小生成树),那么我们就称T1为G的次小生成树。通俗易懂地来说可以理解为权值第二小的生成树。解题思路:这里只讨论非严格次小生成树。如果想要得到次小生成树,可以通过替换最...
2019-11-09 18:35:01
781
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人