1 条题解
-
0
题解
思路
把单个水晶球写成列向量 。七种操作中的前六种都可写成 :前三种是属性间线性叠加,操作 4 利用常数坐标实现加法,操作 5 修改对角元,操作 6 把 所在行清零并从常数坐标取值。
线段树节点保存区间向量和 。同一个矩阵可直接作用于向量和,因此支持区间修改和区间查询。
做法
每个节点维护一个待下传矩阵 。新操作矩阵为 时,节点和更新为 ,懒标记更新为 ,因为子节点将先经历旧操作、再经历新操作。查询时把懒标记下传即可。
子任务 1 可以逐元素模拟。所有区间均为 时只需维护一个全局四维向量。操作仅含 时三个属性可以分别维护独立懒标记。没有常数加法与赋值时,三维线性矩阵已足够。
证明
每种修改对 都是线性变换。矩阵乘法的结合律保证按时间顺序复合后,节点懒标记与逐次执行操作等价。线性变换满足 ,所以直接变换区间和与逐元素修改后再求和完全一致。线段树把任意区间拆成互不相交节点,查询合并后得到题目要求的三个属性和。
复杂度
- 时间复杂度:,矩阵维数为常数;
- 空间复杂度:。
- 1
信息
- ID
- 995
- 时间
- 5000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者