BZOJ3132 上帝造题的七分钟

矩阵修改矩阵求和的裸题

参考 wyl8899《树状数组维护区间和的模型及其拓广的简单总结》一文。

树状数组在进行区间操作的时候维护一个查分数组 d 。 d[i] = a[i] - a[i - 1]。 这样单点询问就是 ∑i = 1 … x d[i]

区间询问的时候, 询问 1 … x 的区间即要求 ∑i = 1 … x (d[i] * (x - i + 1)), 即 (x + 1) * ∑(d[i]) - ∑ (d[i] * i)。 所以说只要多维护一个 d[i] * i 的树状数组就可以了。

很容易拓展到二维:矩阵修改的时候, 类似地, 开一个 d[i, j] 表示 从(i, j)到 (n, m) 的这个矩阵的增量, 修改(x1, y1  ,  x2, y2)这个矩形即令 d[x1][y1] += c; d[x1][y2 + 1] -= c; d[x2 - 1][y1] -= c; d[x2 + 1][y2 + 1] += c; 就可以了。

询问(1,1  ,  x, y)的时候, 也可以求出一个式子 ∑(i=1…x, j=1…y)d[i][j] * (x - i + 1) * (y - j + 1)。 整理得 (x + 1) * (y + 1) * ∑(d[i][j]) - ∑(d[i][j] * i) * (y + 1) - ∑(d[i][j] * j) * (x + 1) + ∑(d[i][j] * i * j) 。 把这四个数全都维护起来就好了 ^_^

时间: 2024-10-22 14:20:24

BZOJ3132 上帝造题的七分钟的相关文章

bzoj3132 上帝造题的七分钟(差分+二维树状数组)

bzoj3132 上帝造题的七分钟(差分+二维树状数组) Time Limit: 20 Sec Memory Limit: 128 MB Description "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. 第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作. 第四分钟,彩虹喵说,要基于二叉树的数据结构,于是便有了数据范围. 第五分

【树状数组】BZOJ3132 上帝造题的七分钟

3132: 上帝造题的七分钟 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1004  Solved: 445[Submit][Status][Discuss] Description "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. 第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作.

【BZOJ3132】上帝造题的七分钟 树状数组

[BZOJ3132]上帝造题的七分钟 Description “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. 第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作. 第四分钟,彩虹喵说,要基于二叉树的数据结构,于是便有了数据范围. 第五分钟,和雪说,要有耐心,于是便有了时间限制. 第六分钟,吃钢琴男说,要省点事,于是便有了保证运算过程中

BZOJ 3132: 上帝造题的七分钟( 二维BIT )

二维树状数组... 自己YY一下再推一下应该可以搞出来... ---------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep( i , n ) for( int i = 0 ; i <

3038: 上帝造题的七分钟2 [线段树 暴力]

3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1210  Solved: 536[Submit][Status][Discuss] Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部."第一分钟,X说,要有数列,于是便给定了一个正整数数列.第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作.第三分钟,k说,要能查询,于是便有了求一段数的和的操作.第四分

Bzoj3038 上帝造题的七分钟2 并查集

Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1135  Solved: 509 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部."第一分钟,X说,要有数列,于是便给定了一个正整数数列.第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作.第三分钟,k说,要能查询,于是便有了求一段数的和的操作.第四分钟,彩虹喵说,要是noip难度,于是便有了数据范围.第五分钟,诗人说,要有韵律,于

tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树

P1716 - 上帝造题的七分钟 From Riatre    Normal (OI)总时限:50s    内存限制:128MB    代码长度限制:64KB 背景 Background 裸体就意味着身体. 描述 Description “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵.第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作.第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作.第

C++之路进阶——线段树(上帝造题的七分钟 2)

2492 上帝造题的七分钟 2 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作. 第三分钟,k说,要能查询,于是便有了求一段数的和的操作. 第四分钟,彩虹喵说,要是noip难度,于是便有了数据范围. 第五分钟,诗人说,要有韵

3038: 上帝造题的七分钟2

3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 662  Solved: 302[Submit][Status] Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部."第一分钟,X说,要有数列,于是便给定了一个正整数数列.第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作.第三分钟,k说,要能查询,于是便有了求一段数的和的操作.第四分钟,彩虹喵说,要是n