序列操作
题目背景
育华学校编程编程社团开展序列操作实践项目,成员需对非负整数序列执行按位或更新与区间求和操作,以此锻炼对位运算特性及高效数据处理的掌握,模拟真实编程竞赛中需结合算法优化应对大规模数据的场景。
题目描述
现有长度为 n 的非负整数序列 {a} ,需进行 q 次操作,操作分两类:
- 按位或操作:给定非负整数 x,序列所有元素执行 ai←ai OR x(元素与 x 按位或后更新自身 )。
- 区间求和操作:给定区间 [l,r](1≤l≤r≤n ),输出该区间元素和 ∑i=lrai 。
输入格式
第一行:两个整数 n(序列长度 )、q(操作次数 )。
第二行:n 个非负整数,为初始序列 a1,a2,…,an 。
接下来 q 行:每行表示一个操作,操作 1 格式为 1 x
,操作 2 格式为 2 l r
。
输出格式
对每个操作 2,输出一行整数,为对应区间的和。
数据范围与测试点(共20个测试点)
测试点编号 |
n 范围 |
q 范围 |
特殊性质描述 |
1-2 |
1≤n≤500 |
1≤q≤500 |
|
3-4 |
1≤n≤10000 |
1≤q≤10000 |
5-6 |
操作2的区间固定为全序列; |
7-8 |
1≤n≤20000 |
1≤q≤20000 |
|
9-10 |
1≤q≤20000 |
ai全为0 |
11-12 |
1≤n≤25000 |
1≤q≤25000 |
|
13-14 |
1≤n≤5×104 |
1≤q≤5×104 |
无操作1 |
15-16 |
1≤n≤105 |
1≤q≤105 |
操作1全部相同值 |
17-18 |
1≤n≤1.5×105 |
1≤q≤1.5×105 |
|
19-20 |
1≤n≤2×105 |
1≤q≤2×105 |
全部测试数据:1≤n,q≤2×105,0≤ai,x≤109