首页 > 其他分享 >树状数组板子(单点增加+范围查询)

树状数组板子(单点增加+范围查询)

时间:2025-01-20 13:33:23浏览次数:1  
标签:单点 树状 int sum 板子 add ans return

用于解决 范围数字和 与 单点增加 问题(复杂度O(logn))

build 方法(构造树状数组)

void build(){
	for(int i=1,v;i<=n;i++){
		cin>>v;
		add(i,v);
	}
}

lowbit方法 (获取一个二进制数最低位的1的状态)

int lowbit(int x){
	return x&(-x);
}

add方法 (单点增加)

void add(int i,int v){
	while(i<=n){
	tree[i]+=v;
	i+=lowbit(i);	
	}
}

sum方法(1~i 范围查询)

int sum(int i)//1~i范围累加和
{
	int ans=0;
	while(i>0){
		ans+=tree[i];
		i-=lowbit(i);
	}	
	return ans;
} 

range 方法(l~r范围查询)

int range(int l,int r){
	return sum(r)-sum(l-1);
}

标签:单点,树状,int,sum,板子,add,ans,return
From: https://www.cnblogs.com/benscode/p/18681145

相关文章

  • 代码随想录——动态规划31打家劫舍III(树状DP)
    这道题目是打家劫舍III(HouseRobberIII),是打家劫舍系列问题的变种。问题描述如下:小偷发现了一个新的区域,这个区域的所有房屋排列类似于一棵二叉树。如果两个直接相连的房屋在同一晚被打劫,房屋会自动报警。给定这棵二叉树的根节点root,求在不触发警报的情况下,小偷能够盗取的最......
  • R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组
    R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(HierarchicalDendrogram)目录R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点......
  • 树状数组【单点修改+区间查询】+二分
    https://codeforces.com/gym/580226/problem/H#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#definelowbit(x)x&(-x)usingll=longlong;usingpii=pair<int,int>;constdoublePI=acos(-1);constintN=2e5......
  • 树状数组【区间修改+单点查询】
    https://www.luogu.com.cn/problem/P3368#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#definelowbit(x)x&(-x)usingll=longlong;usingpii=pair<int,int>;constdoublePI=acos(-1);constintN=5e5+10......
  • 树状数组【模板】
    https://www.luogu.com.cn/problem/P3374#include<bits/stdc++.h>usingnamespacestd;#defineendl'\n'#definelowbit(x)x&(-x)usingll=longlong;usingpii=pair<int,int>;constdoublePI=acos(-1);constintN=5e5+10......
  • 拓补排序板子(邻接表实现)
    #include<iostream>#include<vector>usingnamespacestd;constintmaxn=2e5+5;vector<int>graph[maxn];//邻接表voidaddedge(intu,intv){graph[u].emplace_back(v);}intindegree[maxn];//入度表intmain(){intn,m;cin>>n>......
  • 轻松实现单点登录(SSO):基于 Keycloak 的 OIDC 与 OAuth 2.0 完整指南
    言简意赅的讲解KeycloakOIDC与OAuth2.0解决的痛点Keycloak是一款开源的身份和访问管理(IAM)工具,支持多种协议,包括OIDC(OpenIDConnect)、OAuth2.0、SAML等。它简化了身份认证与授权流程,提供了集中管理用户、角色、权限等功能,常被用作企业或微服务体系下的统一认证中心......
  • 单调栈板子
    单调栈用于求解数组每个位置上左边/右边离自己最近的且严格小于/大于自己位置上的数的位置时间复杂度O(N)(每个元素下标进栈一次出栈一次)元素下标能表示的含义比元素本身要多(ps:注意数组长度,过大就要开到全局变量中,否则异常退出orz)方法(求每个位置上离自己最近且严格小于自己......
  • 树状数组
    回顾一下以前不太明白的树状数组原理。以@Gcint-since2024大佬做的总结为参考。\(lowbit(x)\)表示\(x\)在二进制表示下从右往左第一个\(1\)及其后所有的\(0\)构成的数。记\(a[x]\)为原数组,\(tree[x]\)为树状数组:定义\(tree[x]\)表示以\(a[x]\)结尾,长度为......
  • Luogu P2414 NOI2011 阿狸的打字机 题解 [ 紫 ] [ AC 自动机 ] [ 离线思想 ] [ 树状数
    阿狸的打字机:非常牛的AC自动机题。暴力先考虑在暴力的情况下,我们如何计算\(x\)匹配\(y\)的次数。显然,我们会模拟往\(y\)里加字符的过程,在此过程中做KMP进行匹配,统计答案。那么如果涉及多个模式串呢?就可以把KMP加强成AC自动机了。考虑在AC自动机上如何刻画这个......