9568: 进步

内存限制:512 MB 时间限制:4 S
题面:传统 评测方式:文本比较 上传者:
提交:2 通过:1

题目描述

小 hua 和你说:我太想进步了。

小 hua 记录了 nn 天内每天的分数增减情况(记为 aiai,可能是负数),有时候会发现自己记错了某一天的得分,会将它修正。

初始小 hua 得 0 分,从第 1 天开始,累计得分总和每上升 100,就称她进步了一次。(当然因为有可能会扣分而分数下降,甚至总分变成负数)

有以下两种操作共 qq 次:

  1. 修改第 xx 天的小分,变为 yy
  2. 询问第 ll 到第 rr 天的进步差,即,第 rr 天后的进步次数减去第 l−1l1 天后的进步次数。
    形式化的,记 si=∑j=1iajsi=j=1iaj,答案即为 ⌊sr/100⌋−⌊sl−1/100⌋sr/100sl1/100。(向 00 取整,即 ⌊−101/100⌋=−1101/100=1

输入格式

第一行一个整数 TT 表示测试数据组数。

对于每组数据:

  • 第一行两个正整数 n,qn,q 表示总天数和总操作次数。
  • 第二行 nn 个整数 aiai 表示每天的得分。
  • 接下来 qq 行,每行三个数为 op,x,yop,x,y
    • 若 op=1 则表示把第 x 天得分改为 y。
    • 若 op=2 则询问第 x 天到第 y 天的进步差。

输出格式

为了防止输出量过大,采用特殊的方式输出,每组询问只需要输出一个整数 AnsAns

设一共有 mm 次 op=2 的操作,对于每个 op=2 的操作,设它是这组数据中的第 i 个,且答案为 ansiansi

那么总答案 Ans=⨁i=1mansi×iAns=i=1mansi×i,即只需要输出所有 ansi×iansi×i 的异或和。( 即异或运算)

输入样例 复制

1
8 8
170 180 45 120 -100 134 161 -21 
2 4 4
1 1 28
2 3 8
1 5 -63
1 2 -41
2 5 5
1 3 90
2 3 8

输出样例 复制

-23

数据范围与提示

样例中原本四次询问的答案为:2、3、-1、4。 处理后 2×1⊕3×2⊕−1×3⊕4×4=−232×13×21×34×4=23

对于所有数据:1≤T≤10,1≤n,q≤2×105,−105≤ai≤1051T10,1n,q2×105,105ai105

op=1 时,1≤x≤n,−105≤y≤1051xn,105y105

op=2 时,1≤x,y≤n1x,yn