云计算百科
云计算领域专业知识百科平台

【算法详解】三维前缀和与差分

三维前缀和与差分

By Zhang_HangWei

1. 三维前缀和

1.1 公式

s[x][y][z] = s[x1][y][z] + s[x][y1][z] + s[x][y][z1] s[x1][y1][z] s[x1][y][z1] s[x][y1][z1] + s[x1][y1][z1] + a[x][y][z]

1.2 公式理解

s[x][y][z]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x-1][y][z]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x][y-1][z]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x][y][z-1]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x-1][y-1][z]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x-1][y][z-1]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x][y-1][z-1]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x-1][y-1][z-1]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

a[x][y][z]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过以上操作我们得到前缀和s[x][y][z]

1.3 应用:求子立方体和

我们计算整个红色立方体中蓝色立方体里的数字和(每个小立方体内存有一个数字)

毕竟是三维数组嘛!

蓝色立方体是红色立方体的子立方体

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中 (x1,y1,z1)(x_1,y_1,z_1)(x1,y1,z1)(x2,y2,z2)(x_2,y_2,z_2)(x2,y2,z2) 为立方体的左上角与右下角

公式

sum = s[x2][y2][z2] s[x2][y2][z11] s[x2][y11][z2] s[x11][y2][z2] + s[x11][y12][z2] + s[x11][y2][z11] + s[x2][y11][z11] s[x11][y11][z11]

图示

s[x2][y2][z2]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

都是以 BBB 为原点向左建立 xxx 轴,向右建立 yyy 轴,向下建立 zzz

s[x2][y2][z1-1]这是最上面一层

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x2][y1-1][z2]这是 y−zy-zyz 那一面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x1-1][y2][z2]这是 x−zx-zxz 那一面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x1-1][y1-2][z2]这是zzz 轴上的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x1-1][y2][z1-1] y−zy-zyz 面最上的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x2][y1-1][z1-1]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s[x1-1][y1-1][z1-1]蓝色立方体外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. 三维差分

2.1 子立方体加数

这里对差分的介绍我们仍然是先介绍子立方体加数,特殊的子立方体加数的三维差分

首先我们对a[x][y][z]加上 CCC 就是对s[x][y][z]右下角的每个s[][][]数组加 CCC

这里我们对子立方体 (x1,y1,z1)(x_1,y_1,z_1)(x1,y1,z1), (x2,y2,z2)(x_2,y_2,z_2)(x2,y2,z2) 加上 CCC

蓝色部分加上 CCC

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

公式

a[x1][y1][z1] += c;
a[x1][y1][x2 + 1] -= c;
a[x1][y2 + 1][z1] -= c;
a[x2 + 1][y1][z1] -= c;
a[x1][y2 + 1][z2 + 1] += c;
a[x2 + 1][y1][z2 + 1] += c;
a[x2 + 1][y2 + 1][z1] += c;
a[x2 + 1][y2 + 1][z2 + 1] -= c;

2.2 差分

x1=x2,y1=y2,z1=z2x_1 = x_2,y_1 = y_2, z_1= z_2x1=x2,y1=y2,z1=z2 是用以上公式就是差分

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【算法详解】三维前缀和与差分
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!