首页 > 其他分享 >前缀和 & 差分

前缀和 & 差分

时间:2024-08-09 14:41:38浏览次数:12  
标签:前缀 sum 差分 x2 数组 y1 y2

1. 前缀和

前缀和是一种支持不带修改,多次查询的数据结构。

1.1 一维前缀和

维护前缀和数组 \(b_i=\sum\limits_{j=1}^i a_i\),则 \(b\) 数组还可以通过递推式 \(b_i=b_{i-1}+a_i\) 得到。

当需要求区间 \([l,r]\) 的和,就可以通过 \(b\) 数组 \(b_r-b_{l-1}\) 得到,时间复杂度 \(\mathcal{O}(1)\)。

1.2 二维前缀和

类比一维前缀和,令前缀和数组 \(b_{i,j}=\sum\limits_{k=1}^i \sum\limits_{l=1}^j a_{k,l}\)。

观察上图可知,\(b_{i,j}=S_1+S_2+S_3+a_{i,j}\),而 \(b_{i,j-1}=S_1+S_3\),\(b_{i-1,j}=S_1+S_2\),\(b_{i-1,j-1}=S_1\),由容斥原理可以得到 \(b_{i,j}=b_{i-1,j}+b_{j,i-1}-b_{i-1,j-1}+a_{i,j}\)。

当需要查询 \((x1,y1)\sim(x2,y2)\) 子矩阵的和时,类比上述过程,易得 \(sum=b_{x2,y2}-b_{x2,y1-1}-b_{x1-1,y2}+b_{x1-1,y1-1}\)。

所以当我们处理出 \(b\) 数组之后,之后即可 \(\mathcal{O}(1)\) 查询了。

标签:前缀,sum,差分,x2,数组,y1,y2
From: https://www.cnblogs.com/zhuluoan/p/18350719

相关文章

  • 【线段树合并/树上差分】[P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并
    【线段树合并/树上差分】P4556[Vani有约会]雨天的尾巴/【模板】线段树合并思路对\(x,y,lca(u,v),fa_{lca(u,v)}\)四个点进行树上差分,然后用线段树合并动态权值线段树。#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;template<classNode>str......
  • 生物电信号放大器的差分放大器与隔离放大器
    人体电信号测量流程生物电信号是为我们测量的目标,电极传感器在实际应用中一般分为三个,包括信号电极、参考电极和接地电极。而生物电放大器这是最为重要的部分,它将我们通过电极传感器获得的微弱电信号进行放大、滤波从而实现真实准确地在显示器上展示我们的信号表现。生物电放......
  • 表面贴装差分输出晶体振荡器(DSO753SK/DSO753SJ/DSO753SD):高性能频率源的卓越之选
    在当今高度集成化和高速化的电子世界中,精准、稳定且高速的频率源对于各种电子设备的正常运行至关重要。表面贴装差分输出晶体振荡器(DifferentialOutputCrystalOscillator)DSO753SK、DSO753SJ和DSO753SD以其出色的性能和独特的特点,成为了满足现代电子系统苛刻要求的理想......
  • 洛谷题单指南-前缀和差分与离散化-P1904 天际线
    原题链接:https://www.luogu.com.cn/problem/P1904题意解读:给出(左端点,高度,右端点)表示的若干建筑,要输出其轮廓,所谓轮廓就是每个点被覆盖的最高建筑的高度所描绘的线。解题思路:如果能计算每个点被覆盖的最高建筑的高度,用数组h[10005]保存,那么输出轮廓的过程只需要枚举每一个点,如......
  • 「Day 2—贪心问题&分治&前缀和」
    贪心问题定义顾名思义,越贪越好。。。习题P1094[NOIP2007普及组]纪念品分组思路简单来说:最少的+最多的,利用双指针。代码#include<algorithm>#include<iostream>usingnamespacestd;intw,n;intp[30005];intmain(){cin>>w;cin>>n;for(inti=1;i......
  • 算法【构建前缀信息解决子数组问题】
    本文需要对掌握哈希表的用法。构建某个前缀信息比如最早出现、最晚出现、出现次数等,是很常见的技巧。除此之外,还有很多种类的前缀信息可以构建出来,解决很多子数组相关问题。下面通过几个题目加深对构建前缀信息这个方法的理解。题目一简要描述:构建前缀和数组。快速解决子......
  • 算法【前缀树】
    注意:学习本篇最少应知道什么是树结构和哈希表怎么用。前缀树又叫字典树,英文名trie。每个样本都从头节点开始根据前缀字符或者前缀数字建出来的一棵大树,就是前缀树。没有路就新建节点;已经有路了,就复用节点。前缀树的使用场景:需要根据前缀信息来查询的场景前缀树的优点:根......
  • DAY4 前缀和与差分
    本文中将要介绍前缀和与差分的简单知识,全部题目来自acwing,是对y总讲解的简单归纳。题目:acwing795输入一个长度为 n的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l个数到第 r个数的和。输入格式第一行包含两个整数 n和 ......
  • 中缀表达式转前缀表达式
    中缀表达式转前缀表达式:举例:(1+2)/3*41.根据正常的运算顺序,应该先算(1+2),所以这里先改(1+2):括号可以去掉,变成1+2,把1+2看成是xyz形式,‘1’对应x,‘+’对应y,‘2’对应z;然后改成yxz形式,也就是+12。2.随后把(+12)看作一个整体(加上括号便于区分),把原式替换变成(+12)/3*4,继续按上述步骤:......
  • 「字符串」实现Trie(字典树|前缀树)的功能 / 手撕数据结构(C++)
    概述在浏览器搜索栏里输入几个字,就弹出了以你的输入为开头的一系列句子。浏览器是怎么知道你接下来要输什么的?来看看字典树干了什么。字典树是一种高效记录字符串和查找字符串的数据结构。它以每个字符作为一个节点对字符串进行分割记录,节点形成树状结构,在录入或查找时只......