矩形加矩形求和

题目

题解

他这个的大致意思,我说一下,然后记得写一下代码

比如只考虑某个只有一个点的询问,在二维平面上查询区间 [ l , r ] [l,r] [l,r],值为 x x x

我们扫描线扫描到 l l l的时候,假设值为 x 0 x_0 x0 l + 1 l+1 l+1时,值为 x 1 x_1 x1,…, r r r时,值为 x r − l x_{r-l} xrl,那么答案肯定就是所有 x x x加起来

假设 x i = d 0 + d i x_i=d_0+d_i xi=d0+di,那么答案就可以用 x 0 x_0 x0 d d d表示,而 d i d_i di i i i位置前面所有修改的和,于是我们展开所有的 d d d,就会发现某个修改对答案的贡献就是这个修改的值乘以(这个询问的右端点减去这个修改的下标),即为这个修改的值乘以这个询问的右端点减去这个修改的值乘以这个修改的下标,所以我们用两次扫描,第一次将所有值乘以询问右端点,第二次将所有修改乘以询问的右端点就好了

答案见OI-wiki即可

主要是记住这个问题静态版本的解答方法,然后没必要用线段树,用树状数组就好了

可以像蓝书那样简化,把最开始的矩阵也变成一次一次的加的操作然后放到操作序列里面

update 2024.7.19

重新做的时候,一眼二维差分,然后就要上二维树状数组,结果真的可以这么做,而且正解就是这么做

提一个细节,在树状数组的修改/查询操作中的循环里面一定要定义临时变量,比如修改,要写成

void add(int x,int y,int d,int op)
{
	for(int i=x;i<=n;i+=i&-i)
	for(int j=y;j<=m;j+=j&-j)
	c[i][j][op]+=d;
}

而不是

void add(int x,int y,int d,int op)
{
	for(;x<=n;x+=x&-x)
	for(;y<=m;y+=y&-y)
	c[x][y][op]+=d;
}

相关推荐

  1. 矩形矩形求和

    2024-07-19 19:28:02       22 阅读
  2. <Halcon> 变换矩阵求解

    2024-07-19 19:28:02       36 阅读
  3. 矩阵1-范数与二重求和求和可交换

    2024-07-19 19:28:02       30 阅读
  4. 雅可比矩阵奇异求解

    2024-07-19 19:28:02       33 阅读
  5. WPF 简单绘制矩形

    2024-07-19 19:28:02       50 阅读
  6. 85. 最大矩形

    2024-07-19 19:28:02       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 19:28:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 19:28:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 19:28:02       62 阅读
  4. Python语言-面向对象

    2024-07-19 19:28:02       72 阅读

热门阅读

  1. TCP协议

    TCP协议

    2024-07-19 19:28:02      19 阅读
  2. 深入探讨:Node.js、Vue、SSH服务与SSH免密登录

    2024-07-19 19:28:02       23 阅读
  3. GitHub每日最火火火项目(7.18)

    2024-07-19 19:28:02       19 阅读
  4. 微服务常用的中间件有哪些?都有什么用途?

    2024-07-19 19:28:02       19 阅读
  5. 逆向工程四个抽象层次-系统架构师(三十)

    2024-07-19 19:28:02       22 阅读
  6. OpenCV——图像与视频的读取

    2024-07-19 19:28:02       21 阅读
  7. 物理设计基础概念 —— Pin

    2024-07-19 19:28:02       18 阅读
  8. 机器学习之对比学习MoCo

    2024-07-19 19:28:02       19 阅读
  9. tcp(7) — Linux Programmer‘s Manual

    2024-07-19 19:28:02       17 阅读
  10. 开放开源开先河(三)

    2024-07-19 19:28:02       19 阅读