#37. 区间权值重构与查询
区间权值重构与查询
题目描述
给定一个长度为 的序列 ,初始时 (即 )。
接下来有 次操作,分为以下两种:
- 区间线性变换:给定 ,对于所有 ,将 更新为 。注意这里的 是下标,不是当前的值。
- 区间查询:给定 ,询问当前序列中 的值。
由于答案可能很大,请对 取模后输出。
输入格式
第一行包含两个整数 ,表示序列长度和操作次数。 接下来 行,每行描述一个操作:
- 若第一个数为
1,则该行包含 5 个整数 ,表示执行区间线性变换。 - 若第一个数为
2,则该行包含 3 个整数 ,表示执行区间查询。
数据范围与提示
对于 100% 的数据:
提示: 直接维护每个位置的值会导致超时。考虑使用线段树,并在节点上维护该区间内所有元素的平方和、一次方和以及下标的某些统计量。当施加线性变换 时,新的平方和可以通过旧的统计量和下标的统计量推导出来。注意懒标记的合并规则。
相关
在下列比赛中: