Uoj#654. 【ULR #2】后门
题意:对于长度为
对于序列
答案对
- 原题:
- 加强版:
你无需考虑输入序列
考虑贡献,设
将一种筛选记为
筛选是可以叠加的。 两次筛选
注意到我们总是可以根据
考虑一个筛选序列符合要求的充要条件。记筛选序列为
在筛选
生效后(只有最后一个 未生效),剩余的数至少有两个(否则就停止了)。 记
(前 个筛选叠加),则充要条件为 (在前面有一个数)或 (在后面有一个数)。 等价条件为
。 在最后一步,筛选中的数变为单一的
。(并停止) 最后一步的筛选
要满足 (将前面的条件取反) 此外,还要满足
不超过 生效后的序列长度。 这个长度为
(分别计算 前后的位置个数)。 总的条件为
综上,我们只需要得知
定义
考虑枚举
考虑整除差分。
首先做一步转化,记
定义
于是有:
但有一个例外,当
于是瓶颈就仅仅在于求出
对于加强版,需要
由递推式观察
根据唯一分解,以各个指数为基,将数
这个点每一步可以走向维度坐标只减不增的区域,走到原点的方案数即为
不难发现,若两个坐标将维度任意排序后相同,则
在这种定义下,在
然后我们将所有坐标(以及对应函数值)插入字典树,便于检索。
接下来的任务就是对每个
筛出所有质数后,可以利用「树形筛」来得到每个数的坐标。
该筛法的思想是,从小到大考虑各个质因子,以及其指数(即逐位确定坐标)。配合字典树,可以快速找到对应的函数值。
可以发现,该筛法恰会访问