1 条题解
-
0
思路
所有路径总价值对权值数组是线性的。设格子 在全部长度为 的路径中一共被经过 次,则当前答案就是 。修改一个位置时,只需按照权值差更新这一项。
令 表示从任意格子出发,移动恰好 步后到达格子 的路径数。初始有 ,转移来自相邻格子。
做法
先用动态规划求出所有 。考虑一条路径在第 步位于 :它的前缀有 种。由于格子链是无向图,从 再走 步的方案数同样等于 。因此
预处理全部 后,计算初始加权和。每次把 改成 时,将答案增加 ,再保存新权值。所有运算都对 取模。
正确性证明
固定格子 和路径中的时刻 。任意一条在第 步经过 的路径,可以唯一拆成一个终点为 、长度为 的前缀和一个起点为 、长度为 的后缀。二者方案数分别为 与 ,乘积就是该时刻经过 的路径数。
对所有时刻求和得到 ,恰好统计了格子 在所有路径价值中的总出现次数。再对所有格子按权值加权,即得到全部路径价值之和。单点修改只改变对应格子的加权项,因此增量更新始终保持正确答案。
复杂度
预处理时间复杂度为 ,每次修改为 ,总时间复杂度为 ;空间复杂度为 。
- 1
信息
- ID
- 1263
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者