首页 > 其他分享 >树状数组模板

树状数组模板

时间:2023-12-26 09:12:27浏览次数:49  
标签:单点 树状 int lowbit sum 数组 BIT 模板

单点修改,区间查询/区间修改,单点查询

template<typename T>
struct BIT {
#ifndef lowbit
#define lowbit(x) (x & (-x));
#endif
	// static const int maxn = 5e5 + 50;
	int n;
	vector<T> t;

	BIT () {}
	BIT (int _n): n(_n) { t.resize(_n + 1); }
	BIT (int _n, vector<T>& a): n(_n) {
		t.resize(_n + 1);
		for (int i = 1; i <= n; ++ i) {
			t[i] += a[i];
			int j = i + lowbit(i);
			if (j <= n) t[j] += t[i];
		}
	}
	//单点修改
	void update(int i, T x) {
		while (i <= n) {
			t[i] += x;
			i += lowbit(i);
		}
	}
	//区间查询
	T sum(int i) {
		T ans = 0;
		while (i > 0) {
			ans += t[i];
			i -= lowbit(i);
		}
		return ans;
	}

	T query(int i, int j) {
		return sum(j) - sum(i - 1);
	}
	//区间修改则存入差分数组,[l, r] + k则update(x,k),update(y+1,-k)
	//单点查询则直接求前缀和sum(x)
};

标签:单点,树状,int,lowbit,sum,数组,BIT,模板
From: https://www.cnblogs.com/Kescholar/p/17927354.html

相关文章

  • R语言布朗运动模拟股市、物种进化树状图、二项分布可视化
    全文链接:http://tecdat.cn/?p=32393原文出处:拓端数据部落公众号本文模拟了在连续和离散时间布朗演化一些简单的方法。布朗运动的数学模型(也称为随机游动)也可以用来描述许多现象以及微小颗粒的随机运动,如股市的波动和在化石中的物理特性的演变。布朗运动是随机模式,即改变了从一......
  • Halon 模板匹配流程
    读取图片read_image灰度筛选threshold面积筛选select_shape分区connection膨胀(填充缝隙)dilation_circle勾画边缘(轮廓)gen_contour_region_xld建立轮廓模型create_scaled_shape_model_xld(Contours,‘auto’,rad(0),rad(360),‘auto’,0.8,1.1,‘auto’,‘auto’,‘......
  • Day38 三种数组初始化及内存分析
    三种数组初始化及内存分析Java内存分析Java内存:1.堆存放new的对象和数组​可以被所有的线程共享,不会存放别的对象引用2.栈存放基本变量类型(会包含这个基本类型的具体数值)​引用对象的变量(会存放这个引用在堆里面的具体地址)3.方法区可以被......
  • Windows Server 2016 OVF, updated Dec 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2016OVF,updatedDec2023(sysin)-VMware虚拟机模板2023年12月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2016-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • Windows Server 2019 OVF, updated Dec 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2019OVF,updatedDec2023(sysin)-VMware虚拟机模板2023年12月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2019-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgWind......
  • Windows Server 2022 OVF, updated Dec 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2022OVF,updatedDec2023(sysin)-VMware虚拟机模板2023年12月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2022-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • lazy线段树模板
    importjava.io.*;importjava.util.*;publicclassMain{staticintN=(int)1e5+10;staticlong[]arr=newlong[N];staticlong[]sum=newlong[N<<2];staticlong[]lazy=newlong[N<<2];staticintn,m;public......
  • 揭秘JVS低代码平台:如何通过行内按钮逻辑引擎配置,实现高效文件模板替换下载
    在当今数字化的时代,各行各业都在寻求更高效、更便捷的工作方式。对于业务应用来说,将线下操作转化为线上流程是提升效率的关键。在业务应用中通常需要把行数据某字段赋值到一个文件模板上,用户下载该文件模板用于盖章或签字等线下操作。这样的场景在JVS低代码平台上可以通过行内按钮......
  • words这些数组反推aes/des等iv/key的字符串
    我们经常会遇到一些js里面先见到words等数组的,但是不知道它原始的字符串是什么的情况,这个时候我们可以使用对称的stringify进行还原,比如CryptoJS.enc.Utf8.parse('key或者iv值')的结果,我们可以通过CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Utf8.parse('key或者iv值'))进行还原......
  • JavaScript(JS) 数组
    ​ JavaScript数组是一个可变长度的对象,用于存储多个值。数组的值可以是任何类型,包括数字、字符串、对象、函数等。参考文档:JavaScript(JS)数组-CJavaPy1、创建数组可以使用以下方式创建数组:使用方括号[]来创建一个空数组:JavaScriptconstarr=[]; 使用 A......