A

注意到当 不是全 串时,基本可以变成任意一个 串,具体的思路就是先把 变为全 串(),然后再变成想要的串。但是会有反例,注意到至少操作了一次的串至少存在一个 ,满足 这两个位置上的值一样,所以说一定变不了 或者 这种串,且反例只有这个。

B

发现其实就是要求

类似于杨辉三角,有

直接计算即可,时间复杂度

C

的做法跑的太快了,不知道咋卡。

讲讲我期望的做法吧。

可以发现一个子区间的美丽度只有 三种可能,因为 每次不变或至少除

一个子区间的答案为 当且仅当这个子区间的 ,设 为满足左端点为 , 右端点最远到 满足这个子区间的

怎么快速求 呢,显然直接二分会 tle,考虑对每个数分解质因子,然后倒着扫,维护每种质因子当前能够延伸出去的最远位置,那么 就为 所包含的那些质因子 能够延伸出去的最远位置的

如何判断一个子区间的美丽度是否为

为满足左端点为 , 右端点最远到 满足这个子区间的 (除去 这个质因子)。

所含 的质因子个数。

首先得出现 就是这个子区间的 (除去 这个质因子),难点在于判断出现 ,可以发现前缀 的右端点也是一段区间(如果存在),只需要找到这个区间的左端点。

一个符合条件的右端点条件有两个:

  • 这个位置要在 之后。

  • 这个子区间的 的最小值为

开个指针倒着扫一遍即可。复杂度为 ,其中 表示 中不同质因子种数的最大值,,可以接受。

D

确实是简单优化建图题啊,没什么难度。

容易想到将边看成一个点,那其实就好做了。

设关键指针值集合 包括:起点 1 的初始值 0,对于每条连接 的边的颜色,

作为出边的要求值:。即我们必须在 点将指针调整到此值才能进入该边;作为入边的到达值:。即如果从 点进入该边,到达 时指针会停留在 点出发时的值。

对于每个点 ,在 的相邻值之间建立双向边,形成一个环。边权为两个颜色值的环形距离 。这对应在节点 处花费代价调整指针。

对于原图边 ,令 。 我们在 处调整好指针到 后,经过边到达 ,指针仍为 。 因此,建立有向边:,权值为 0。

最后跑一个 dijkstra 即可。

E.

答案容易写成:

其中 在原串 中的所有起始位置集合,

其中

注意到 的关系是 。那么 可以直接通过正串 SAM 进行计算,同样的 通过反串 SAM 进行计算即可。

如果没有看出这一点,可能会去想分块 NTT。

F.

qanalog 简单练习题。

alt

考虑转换为格路计数,不妨假设让路径在 的上方,那么 实际上就是路径与 之间围成的整格数加上 。考虑如何刻画 ,注意可以看作从原点出发,先一直往上走,直到碰到了路径或者 就改变方向。

考虑 表示从 走到 且第一次碰撞时上升的高度为 (就是图中所画的)的所有路径的贡献之和。容易写出转移

这个玩意容易写成一个差卷积的形式,于是可以做到

请注意在 的阶小的时候直接卷是错的,因为这个时候 可能发生,使用 q-Lucas 定理处理即可。