05 2020 档案

摘要:题目 点这里看题目。 分析 由于这个问题与子串相关,那么我们就先把后缀自动机给建出来。 题目条件非常特殊——“出现至少两次”。而 fail 树上一个状态的祖先状态,根据定义,至少会在当前状态中出现一次。我们便可以知道,答案所对应的状态在 fail 树上一定呈祖孙关系。 我们可以用倍增法,求出状态 \ 阅读全文
posted @ 2020-05-30 22:32 crashed 阅读(147) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 可以发现,符合条件的分数约分后,其分母必须为$2m5k$。因此,原分数一定可以表示为: \(\frac{XY}{2^m5^kX}\) 其中$(10,X)=1, XY\le n, 2m5kX\le n$。 可以发现,这样枚举可以保证分母不重复,因而保证枚举出的分数不重复。 阅读全文
posted @ 2020-05-30 21:49 crashed 阅读(200) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 第一步,考虑转换一下题意。 设$a[i]$为任意字符串的第$i$个字符(从$1$标号)。对于两个在原题中要求相等的串——$s_i$和$s_{k-i+1}$。令$l=|s_i|$,\(n=|S|\),\(s_i[1]=S[p]\)(位置对应)。则: \(s_i=S[p]S[ 阅读全文
posted @ 2020-05-30 11:04 crashed 阅读(171) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 我们不难想到,对于系数进行一下的拆分: \[ \begin{aligned} f(u,j)&=\bigoplus_{(u,v)\in E} f(v,j-1)\\ &=\bigoplus_{(u,v)\in E}\bigoplus_{(v,w)\in E} f(w,j-2) 阅读全文
posted @ 2020-05-30 09:38 crashed 阅读(127) 评论(0) 推荐(0)
摘要:题目 点这里看题目。 分析 先对所有的模式串建立广义后缀自动机。 我们需要求出每个节点的$end-pos$集合,这个可以在 \(fail\) 树上用线段树合并快速预处理。 考虑询问。由于字符串的子串就是前缀的后缀,因此我们可以对于每个前缀,处理出它在自动机上的$LCS$对应的节点。那么一个子串在自动 阅读全文
posted @ 2020-05-29 13:31 crashed 阅读(176) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 首先,我们不需要真的从 AC 自动机中把串删掉。由于我们计算贡献和,我们只需要在 AC 自动机上,把已经删除的串的贡献抹掉就可以了。 接着考虑询问。这是一个很基础的问题,一般我们会在 AC 自动机上面处理出每个状态的贡献和,并且将询问的字符串在 AC 自动机上面跑一 阅读全文
posted @ 2020-05-19 14:02 crashed 阅读(122) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 首先对于模式串建立 AC 自动机,并且计算出每个状态$p$的贡献总和$con(p)$。 考虑一个朴素的 DP : $f(i,p)$:当前串长度为$i$,匹配到$p$上的最大答案。 设在$p$后加入字符$c$会转移到$t(p,c)$, DP 的转移如下: $$f(i+ 阅读全文
posted @ 2020-05-18 14:06 crashed 阅读(156) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 我们想要建立一个只包含多个串的公共子串的后缀自动机。最简单的,先建立一个串的后缀自动机。 然后考虑如何进行扩展。在两个串的情况下,我们可以直接把另一个串放到后缀自动机上面跑,中途得到答案。在多个串的情况下显然就不会这么简单了。 考虑每一个串都放到后缀自动机上面跑一跑 阅读全文
posted @ 2020-05-16 08:45 crashed 阅读(125) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 补习知识: 既然可以求出原串中不同的子串的个数,那么我们同样可以求出含重复子串的个数,同样是$dp$: $g(u)$:从$u$节点出发含重复的子串的数量。 转移: $$g(u)=|end pos(u)|+\sum_{(u,v)\in DAWG} g(v)$$ 因为可 阅读全文
posted @ 2020-05-16 08:43 crashed 阅读(127) 评论(0) 推荐(0)
摘要:什么是自动机 (有限状态)自动机是一种抽象的计算模型。一个有限状态自动机有有限个状态,每个状态可以迁移到一个或者多个状态。给定的字符串指定了如何转移。一个有限状态自动机可以表示为一个有向图。 对于一个自动机 \(S\)。如果对于一个串 \(A\),经过转移之后停在了一个“接收状态”那么 \(A\) 阅读全文
posted @ 2020-05-16 08:35 crashed 阅读(254) 评论(0) 推荐(2)
摘要:什么是 min_25 筛 min_25 筛和洲阁筛、杜教筛一样,是一种低于线性的用于求积性函数前缀和的筛法。常用 min_25 筛的时间复杂度为 \(O(\frac{n^{\frac34}}{\log n})\) ,而经过优化可以达到 \(O(n^{\frac23})\) (但是常数巨大且一般用不着 阅读全文
posted @ 2020-05-14 14:06 crashed 阅读(2236) 评论(0) 推荐(2)
摘要:题目 "点这里" 看题目。 分析 首先发现,对于$(a,b,c)$的合法三元组,$c$一定在$a$的子树内,并且$b$也是$c$的祖先。那么我们只需要考虑$b$的位置。如果$b$是$a$的子孙,那么$c$一定就是$b$的子孙,此时的贡献是$siz(b) 1$(我们以下都用$siz(u)$表示$u$的 阅读全文
posted @ 2020-05-14 13:57 crashed 阅读(144) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 由于 KMP 的失配数组有着天然的找循环节的功能,因此我们不难想到对原串进行两次 KMP ,一正一反。 可以发现如下的规律: 1. 原串无循环节,这个时候 " 全场最佳 " 只会有一个元素,并且只有一个(即原串本身); 2. 原串存在循环节,并且 仅由一个字符循环而 阅读全文
posted @ 2020-05-12 14:00 crashed 阅读(124) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 插头 DP ,考虑枚举一下两块之间的分割线,本质上就是两个端点都在边界上的路径。 DP 过程中,我们将 没有端点在边界上面的路径称为 1 路径,反之叫 2 路径 。 对于 1 路径,我们不能中途把它连成环,因此 1 路径的插头需要用括号序表示(最小整数也可以,只要能 阅读全文
posted @ 2020-05-08 13:42 crashed 阅读(213) 评论(0) 推荐(0)
摘要:题目 "点这里" 看题目。 分析 首先可以考虑一个比较粗糙的大 DP : $f(i,j)$:前$i$行,刷$j$次,最多能刷的正确格子数。 转移是一个背包: $$f(i,j)=\max_{1\le k\le m}\{f(i 1,j k)+con(i,k)\}$$ 其中$con(i,k)$表示第$i$ 阅读全文
posted @ 2020-05-04 19:47 crashed 阅读(145) 评论(0) 推荐(0)