码迷,mamicode.com
首页 > 其他好文 > 详细

差分与前缀和 Extra

时间:2020-06-06 00:35:18      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:com   基础   logs   style   enter   htm   差分   text   target   

基础算法戳这里

扩展一:二维前缀和

  给定一个 $n \times m$ 的矩阵,有 $T$ 次询问,每次会给出四个数 $a,b,c,d$,求以点 $(a,b)$ 为左上角,点 $(c,d)$ 为右下角的矩形所有元素和。

  $1 \le n,m \le 3000$,$1 \le T \le 10^6$。

  我们先把问题变简单:如何用二维前缀和求出整个矩阵的和?

  观察一维递推式:$S_i=S_{i-1}+a_i$。

  那么二维递推式大概长这样 $S_{i,j}=F+a_{i,j}$,$F$ 为由前面递推出的数字。

  先假设 $F=S_{i-1,j}+S_{i,j-1}$,但是很容易推翻这个假设,因为从 $(1,1)$ 到 $(i-1,j-1)$ 之间矩阵的所有数被算了两次。

  所以按照容斥原理,累加值应该减去一份 $S_{i-1,j-1}$。

  所以 $S_{i,j}=S_{i-1,j}+S_{i,j-1}-S_{i-1,j-1}+a_{i,j}$,而整个矩阵的和就是 $S_{n,m}$。

  

差分与前缀和 Extra

标签:com   基础   logs   style   enter   htm   差分   text   target   

原文地址:https://www.cnblogs.com/zengpeichen/p/13052887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!