05 2020 档案

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

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