在一个初始矩阵map中进行操作 初始值为0
4种操作
输入0 后面跟着n为矩阵的size 为n*n
输入1 后面跟着 x y v 意思就是在 (x,y)位置的数增加 v
输入2 后面跟着 x1 y1 x2 y2 意思就是查询(x1 ,y1 )到(x2,y2)中的数的和
输入3 程序停止
update操作很简单 就是运用二维树状数组在(x,y)增加v就可以了 如果v<0也一样就是减
getsum求和操作也差不多 想一下在四边形(x1,y1 )到(x2,y2)中求和其实就是
(1,1)到(x2,y2)的总和 - (1,1)到(x1-1,y2)的总和 - (1,1)到(x2,y1-1)的总和再 + (1,1)到(x1,y1)的和
因为(x1,y1)在 (1,1)到(x1-1,y2)的总和 - (1,1)到(x2,y1-1)的总和 中被减了两次
自己画画图应该就可以理解了
至于坐标的++是因为如果坐标为0的话 low(0)会死循环 其实坐标全部++的话结果是一样的
写的时候吧memset函数放在了while里面.....然后自己很无语了查了一下
上代码: