04 2020 档案

摘要:"[SDOI2014]数数" 这题是AC自动机与各种dp相结合的范例。 首先,按照套路,我们建出~~自动AC机~~。然后,因为是N的所有数的总数,很容易想到 数位dp (实际上它如果是在L,R之间所有数的总数则更明显)。 令fx,len,lim表示: 在自动机上x号节点 阅读全文
posted @ 2020-04-26 17:42 Troverld 阅读(129) 评论(0) 推荐(0) 编辑
摘要:"CF GYM101741K. Consistent Occurrences" 题意:给你一个长度为n的串s,以及m次询问,每次给出一个串t,询问ts中最多出现了多少次(出现不能重叠)。 联想到前一题,我们可以将询问建树。 我们可以自然地想到,当匹配成功后,直接跳回根节点( 阅读全文
posted @ 2020-04-26 17:41 Troverld 阅读(141) 评论(0) 推荐(0) 编辑
摘要:"[JSOI2012]玄武密码" 一开始千方百计地想要对那个“母串”进行什么处理,最后也没有想出点什么。 后来发现这道题有点误导性,它没有说是“模式串”,而说是“询问”,因此就比较恶心。 闲话少说,这题正解是将“询问”离线建~~自动AC机~~,然后将“母串”丢进去匹配。(就是最模板的操作) 最后将“ 阅读全文
posted @ 2020-04-26 17:39 Troverld 阅读(101) 评论(0) 推荐(0) 编辑
摘要:"[POI2000]病毒" 只要前面那道文本生成器会的话,这题应该很简单了。 建树方法一模一样,甚至连求ok都一模一样。 之后采取dfs爆搜答案。 从根开始,只走ok=true的儿子,如果走出一个环,那就有合法串(把环的部分提取出来,在任意地方断环成链,再复制粘贴无数遍,就是一个合法的无限长 阅读全文
posted @ 2020-04-26 17:38 Troverld 阅读(109) 评论(0) 推荐(0) 编辑
摘要:"[JSOI2007]文本生成器" 第一题自己没看题解就做出来的~~自动AC机~~题祭。 一眼看出这道题正着求不好求,必须反过来,用总方案数 不合法方案数=合法方案数。 任意一种不合法的方案,在AC自动机上merge时,所遍历到的每一个节点,必定都不是任何串的结尾节点,同时它在fail树上的 阅读全文
posted @ 2020-04-26 17:37 Troverld 阅读(112) 评论(0) 推荐(0) 编辑
摘要:"[HNOI2006]最短母串问题" 好题。 首先建立AC自动机。~~然后就不会了。~~ 观察到n很小,是状压的级别。 考虑将自动机中的fin变量升级为state变量,表示从当前节点出发,能否到达各字符串。 则ins时,有 阅读全文
posted @ 2020-04-26 17:36 Troverld 阅读(115) 评论(0) 推荐(0) 编辑
摘要:"[NOI2011]阿狸的打字机" 这题可以大大加深我们对~~自动AC机~~的理解。 一上来:哇,这是什么神仙读入啊,如果按照它的要求一个一个把所有串建出来的话,肯定会MLE呀! 后来想一想,它这么读入,肯定构成一棵树,并且,它刚好是字典树! 这里是建树的方法。 阅读全文
posted @ 2020-04-26 17:34 Troverld 阅读(114) 评论(0) 推荐(0) 编辑
摘要:"[TJOI2013]单词" 近乎模板,只要暴力建树,再把每个字符串丢进去匹配就可以了。 我一开始写了非拓扑的代码,结果最后一个点T了。 不得不改成了拓扑。 另外,这题需要保存字符串信息,为了避免MLE,我们把所有东西全都压成一个大串。 代码: 阅读全文
posted @ 2020-04-26 17:31 Troverld 阅读(98) 评论(0) 推荐(0) 编辑
摘要:大家好,今天我们来扯~~自动AC机~~AC自动机了。 I.前置知识 trie树。(那些说需要kmp的,不会也没事,不过还是会方便理解一点)。 II.用途 AC自动机可以在O(Σ|S|)的时间内预处理,并在O(|S|)内求出一组模式串集在一个文本串中的出现次数。 换句话说,给你n 阅读全文
posted @ 2020-04-26 17:26 Troverld 阅读(138) 评论(0) 推荐(0) 编辑
摘要:"[POI2010]ANT Antisymmetry" 题意:给你一个长度为n01串,求它的非空并在异或意义下回文的子串数。 这里我们介绍马拉车的扩展: 引入to数组,表示每个字符与哪个字符匹配。 例如,在模板题中,有c[a,z],toc=c阅读全文
posted @ 2020-04-25 12:14 Troverld 阅读(141) 评论(1) 推荐(0) 编辑
摘要:~~Manacher=马拉车~~ 大家好,我们今天来扯Manacher算法了。 I.马拉车可以干什么? 一句话:对于一个字符串s,在O(|S|)时间内,求出它的最长回文子串。 II.预处理 对于一个字符串,它的回文串可以有两种类型: A.奇回文串 例: AACCBCCAA 特征:有单一回文中 阅读全文
posted @ 2020-04-25 12:13 Troverld 阅读(206) 评论(0) 推荐(0) 编辑
摘要:XVI. "CF1251F Red White Fence" 这题充分显现出了FFT~~工具人~~的本性。 对于这个奇奇怪怪的图形的周长,我们平移平移就能发现,它为(红木板长度+总木板数量)2。有了这个结论,我们只需要枚举当前用的是哪块红木板(红木板数量5),再求出 阅读全文
posted @ 2020-04-25 12:09 Troverld 阅读(121) 评论(0) 推荐(0) 编辑
摘要:XV. "[HEOI2016/TJOI2016]求和" 题意:求一个东西 i=0nj=0iSij2jj! 其中Sij为第二类斯特林数,递推公式为$S_n^m=S_{n 1}^{m 1}+m S_{n 1}^ 阅读全文
posted @ 2020-04-25 12:08 Troverld 阅读(258) 评论(0) 推荐(0) 编辑
摘要:XIV. "[SDOI2017]序列计数" 一眼看出这题就是答案=总数量不选质数数量。反正两个都是随便卷卷就出来了。 不过,这题模数极为恶心,要么逼着你敲任意模数NTT(~~很明显我不会~~),要么就只能写FFT。但是,FFT会挂掉,因为不能及时取模, 阅读全文
posted @ 2020-04-25 12:06 Troverld 阅读(116) 评论(0) 推荐(0) 编辑
摘要:XIII. "[SDOI2015]序列统计" 一个非常naive的想法就是多项式快速幂。 我们令一个函数f1(x)=[xS]。并有fi(x)=ijxmodmfi1(i)fi1(j)。则答案为fn(x)。 后面那 阅读全文
posted @ 2020-04-25 12:03 Troverld 阅读(214) 评论(0) 推荐(0) 编辑
摘要:XII. "CF827E Rusty String" 依旧推式子。假设当前我们处理V字符,那么我们令f(x)=[sx=V"sx=?]。我们设答案为p(x),那么有p(x)=i=xn1f(i)f(ix)。 老套路,翻转f 阅读全文
posted @ 2020-04-25 12:00 Troverld 阅读(134) 评论(0) 推荐(0) 编辑
摘要:XI. "CF632E Thief in a Shop" 听说这题NTT常见的模数都会被卡?orzorz。 一看就是一个完全背包的样式。当然咯,FFT题当然应该用FFT做呀。我们构建g(x)=[x商品价值的集合]。计算gk,答案即为gk(x)所有有值的位置。 代 阅读全文
posted @ 2020-04-25 11:59 Troverld 阅读(90) 评论(0) 推荐(0) 编辑
摘要:X. "CF1096G Lucky Tickets" 这题一个NTT快速幂的形式就非常明显了。直接构建一个函数g(x)=[x给出的k个数码]。则我们要求的就是i=0(gn/2(i))2。由于模数是$998244353 阅读全文
posted @ 2020-04-25 11:57 Troverld 阅读(111) 评论(0) 推荐(0) 编辑
摘要:IX. "CF993E Nikita and Order Statistics" 首先,一上来就能想到的思路,对于$ using namespace std; define int long long const double pi=acos( 1); int n,m,cnt[1 1] 1)|((i 阅读全文
posted @ 2020-04-25 11:56 Troverld 阅读(141) 评论(0) 推荐(0) 编辑
摘要:VIII. "[JSOI2012]分零食" 首先,暴力的DP是非常轻松的。设fi,j为(前i个人,分了j颗糖)的种数,再设gi为(一个人拿到i颗糖的快乐度),即(Oi2+Sx+U)。 首先,我们可以将人数A与糖数Mmin,因为反正最多只有前M个人 阅读全文
posted @ 2020-04-25 11:55 Troverld 阅读(1170) 评论(0) 推荐(0) 编辑
摘要:VII. "万径人踪灭" ~~跑题了跑题了~~ 我们可以知道, 答案=位置对称且字符对称的子序列的数量 回文子串数 关于回文子串数,我们可以使用Manacher算法在O(n)时间内实现。如果不会的话,可以参加鄙人的 "拙作" ,这里不再赘述。 那么如何求出 位置对称且字符对称的 阅读全文
posted @ 2020-04-25 11:49 Troverld 阅读(128) 评论(0) 推荐(0) 编辑
摘要:VII. "CF954I Yet Another String Matching Problem" ~~FFT做字符串匹配就是有意思~~ 我们首先必须要搞清楚暴力匹配是什么样的过程。 例: | 位置 | 0 | 1 | 2 | 3 | | : : | : : | : : | : : | : : | 阅读全文
posted @ 2020-04-25 11:47 Troverld 阅读(147) 评论(0) 推荐(0) 编辑
摘要:VI. "CF528D Fuzzy Search" 照旧分字符处理。 首先,我们可以算出每个字符是否可以填入每个位置。 例如,当文本串为AGGACC,k=1时,以下这张表表示了每个位置是否可以填入每个字符: ||0|1|2|3|4|5| | : : | : : | : : | : : | : : 阅读全文
posted @ 2020-04-22 22:15 Troverld 阅读(88) 评论(0) 推荐(0) 编辑
摘要:V. "[计蒜客 A1676]Rock Paper Scissors Lizard Spock" 我们设两个串分别为模式串s和文本串t,长度分别为ST,下标从0开始。 我们可以枚举当前出的手势。将s中所有是当前手势的位置赋成1,不是当前手势的位置赋成0。将t中所 阅读全文
posted @ 2020-04-22 22:14 Troverld 阅读(118) 评论(0) 推荐(0) 编辑
摘要:IV. "UVALive4671 K neighbor substrings" 因为是AB串,所以我们之前II. "残缺的字符串" 的式子中tisi的值只有可能为1,0,1。这样的话,直接平方后,判别式给出的结果就是题目中的‘Hamming distance’,即不同字符数。 但 阅读全文
posted @ 2020-04-22 22:13 Troverld 阅读(109) 评论(0) 推荐(0) 编辑
摘要:"UVA12879 Golf Bot" 或许我应该把这道题放到I. "BZOJ3513: [MUTC2013]idiots" 前面的QaQ。 这题完全就是那题的子问题,直接暴力FFT一下即可。连特殊情况都不需要考虑。 感觉这题被恶评了,应该是紫 ,不可能到黑。 代码: 阅读全文
posted @ 2020-04-22 22:12 Troverld 阅读(67) 评论(0) 推荐(0) 编辑
摘要:残缺的字符串 莫名其妙最后三个点总是T……但是代码是没问题的。 我们设两个串分别为模式串s和文本串t,长度分别为ST,下标从0开始。 先考虑没有通配符的情形。 则如果在t串中以位置x结尾的S个字符可以与串s匹配的话,必有$\sum_^t_{x+i-S-1}-s_ 阅读全文
posted @ 2020-04-22 22:11 Troverld 阅读(105) 评论(0) 推荐(0) 编辑
摘要:"BZOJ3513: [MUTC2013]idiots" FFT只是一个工具,重点还是你如何运用。 我们设一个函数a(x)表示长度为x的共有a(x)根木棍;设一个f(x)表示选出2根木棍长度和为x共有f(x)种方法。显然,$f(x)=\sum_{y=0}^x a(y)a( 阅读全文
posted @ 2020-04-22 22:04 Troverld 阅读(70) 评论(0) 推荐(0) 编辑
摘要:为了自己以后再用FFT时不再一脸懵X,本蒟蒻决定感性理解一下FFT。 FFT可以干啥? 把两个多项式乘在一起。 具体地说,对于两个多项式f:f(x)=Σi=0nfixig:g(x)=Σi=0mgixi,得到一个多项式$h:h(x)=\Si 阅读全文
posted @ 2020-04-22 21:48 Troverld 阅读(164) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示