摘要:
传送门 这道题好像只要跑一个Manacher就能过…… 要求的女生和谐小群体就是求一个回文串,然后同时要计算这个回文串的子串。这个很简单,我们跑一遍Manacher算出每个点的最长回文半径,然后长度为偶数的忽略(题目要求),奇数的计算一下前缀和,然后对于每一个长度用快速幂计算一下同时k减去回文串个数 阅读全文
摘要:
传送门 看过题之后,感觉似乎最长双回文串是可以由两个回文串拼接出来的? 于是乎我就有了一种算法!每次用manacher求出当前最大回文半径的同时,处理出每个一个点向右能拓展的最远的回文串长度和向左能拓展的回文串长度,就有如下递推: mr[i-p[i]+1] = max(mr[i-p[i]+1],p[ 阅读全文
摘要:
传送门 这题果然是AC自动机的大好题! 题目的大意是,给定一个l*c的大网格,每个格子里有一个字符,每个格子可以向八个方向形成字符串,问给定的字符串在哪里能被匹配以及在网格中出现的方向(A代表北,然后依次顺时针转) 解题思路还好想,而且特别暴力:把给定的字符串建成一个AC自动机,之后对于大网格,把八 阅读全文
摘要:
传送门 Trie树的模板题。我们把每个人都存在Trie树里面,然后再每个人跑一遍即可。注意一个人走过之后要清零,否则的话会被重复计算。 阅读全文
摘要:
传送门 这道题能想到是trie树+搜索,不过在trie树上dfs确实让人大开眼界…… 具体怎么做呢?首先我们可以按照模式串来建立一棵trie树,不过这样的话空间限制是一个问题。解决的方法是把trie树像建图一样用链式前向星去存储,这样的话就节省了很多空间(具体怎么实现可以看代码,还是很简单的)。之后 阅读全文
摘要:
传送门 KMP好题啊…… 题中要求我们求出长度不超过原字符串一般的相同的前后缀的个数。其实这个用做前面几道题的思路大致猜测一下……可以发现,我们只要从这个字符串一直往它的next递归,那么我们就可以获得一系列的公共前后缀,而且只要当next的长度<=原长度的一半的时候答案即合法。(不能继续递归,否则 阅读全文
摘要:
传送门 本题有翻译…… 我一开始又有一种沙雕做法……就是每次暴力匹配next的next……(具体操作很诡异,显然它凉了) 我们后来发现,如果把AB看成一个循环节的话,那就相当于问这个字符串能否被拆成k个AB串+一个AB串的前缀(前缀可以为空) 特别的,他也可以被看作能否拆成k+1个循环节。 我们把字 阅读全文
摘要:
传送门 这道题的大意是让我们求出一个字符串内的最小循环节,然后输出这个循环节在字符串中出现过的次数。 如何求呢?一开始我有一种极为暴力的思想,就是每次暴力匹配,遇到一个不匹配的就把它压入当前串,从下一位继续开始匹配。 然而这样会被卡……比如说qaqqaqqaq,程序会输出1,而正确的答案是3. 那么 阅读全文
摘要:
传送门 一道非常不错的欧拉回路(路径)题…… 我们已经知道怎么求欧拉回路(路径)了,但是如果求字典序最小的呢? 求欧拉回路是一个深搜的过程……所以我们不如每次在向下一个点深搜的时候,每次让他先走那个字典序最小的节点,这样我们就能保证字典序最小了。不过实际上这个用邻接表实现会很麻烦。我的实现方法是,对 阅读全文
摘要:
传送门什么是欧拉回路呢……?欧拉回路的定义就是从vi出发到vi,经过每条边有且只有一次的路径。 就很像一笔画。 欧拉回路的性质较多……定理也很多……直接证明很长……我们还是直接说怎么判定,怎么求欧拉回路吧。 无向图:每个点的度不为奇数。 有向图:每个点的入度和出度相同。 如果不符合以上要求,那么图中 阅读全文