1 条题解
-
0
题解
思路
查询同时带有等差下标和线性权值。小 可以直接枚举;对一般数据按步长大小分治:大步长对应很短的序列,小步长则复用同一步长的后缀动态规划。
做法
子任务 1:连续段的两个前缀和
当所有查询的 时,令
$$P_i=\sum_{j=1}^{i}a_j,\qquad Q_i=\sum_{j=1}^{i}j a_j.$$对于右端点 ,查询答案为
预处理和每次查询分别为 、,总复杂度为 。
子任务 2:直接枚举取出的元素
按定义枚举 ,累加 。由于 ,总复杂度为 ,至多约为 。
子任务 3:按步长分组的根号动态规划
取阈值 。
- 若 ,合法性保证 ,直接枚举一次查询只需 。
- 若 ,把相同步长的查询放在一起,并为这个 从右向左计算:
于是 是从 开始、步长为 的后缀元素和, 是同一后缀按 加权后的和。一次长度为 的查询需要删去从 开始的后缀。该后缀在 中的权值整体多了 ,所以
每个出现过的小步长只做一次 动态规划。总时间复杂度为 ,额外空间复杂度为 。
所有乘法和答案都必须使用 64 位有符号整数;答案绝对值可达到约 。
复杂度
- 子任务 1:时间 ,空间 。
- 子任务 2:时间 ,空间 。
- 满分做法:时间 ,空间 。
- 1
信息
- ID
- 1175
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者