首页 > 其他分享 >数状数组

数状数组

时间:2024-02-12 16:44:06浏览次数:25  
标签:数状 树状 点查 数组 序列 操作 节点

介绍
树状数组主要操作为lowbit函数(取出x元素的低位二次幂)方便用于爬链操作(每层子节点通过加上低位二次幂可到达父节点),以及求前缀序列和的操作(将x减去其低位二次幂可得到前一未覆盖序列,通过累加从而达到求前缀和的操作)。

点击查看代码
int lowbit(int x)
{return x&-x;}

适用范围:
1.点修+区查
直接对点进行操作,而后进行爬链操作,在爬链的过程中对父序列进行修改,从而便于区查。
2.区修+点查
用树状数组维护区修的操作,即树状数组中的节点维护差分后的值,在进行点查时,至今查询前一段序列,并进行累加即可得到答案。

标签:数状,树状,点查,数组,序列,操作,节点
From: https://www.cnblogs.com/wner/p/18013963

相关文章

  • Linux 中 使用awk数组根据基因的PAV矩阵计算基因的存在频率
     001、测试数据[b20223040323@admin1test]$lsx_gather_pav.txt[b20223040323@admin1test]$catx_gather_pav.txt##测试数据;每一行是一个个体;每一列是一个基因;矩阵中的0表示基因在这个个体中缺失,1表示基因在这个个体中存在01111......
  • Linux 中 字符串 与shell数组的转换
     001、字符串转换为shell数组[root@PC1test1]#str1="aabb100200500"##生成测试字符串[root@PC1test1]#echo$str1aabb100200500[root@PC1test1]#ay1=($str1)##字符串转换为数组[root@PC1test1]#echo${ay1[0]}......
  • Java break、continue 详解与数组深入解析:单维数组和多维数组详细教程
    JavaBreak和ContinueJavaBreak:break语句用于跳出循环或switch语句。在循环中使用break语句可以立即终止循环,并继续执行循环后面的代码。在switch语句中使用break语句可以跳出当前case,并继续执行下一个case。示例://循环示例for(inti=0;i<10;i++......
  • 力扣递归之88. 合并两个有序数组
    给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初......
  • 面向对象综合练习-对象数组5
    ......
  • PAT乙级-1008(数组元素循环右移问题)
    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯A**N−1)变换为(A**N−M⋯A**N−1A0A1⋯A**N−M−1)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包......
  • Array类 冒泡排序 稀疏数组
    Arrays类数组的工具类java.util.Arrays由于数组对象本身并没有方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作;查看JDK帮助文档Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使......
  • 子数组最大累加和
    子数组最大累加和53.最大子数组和返回子数组最大累加和返回子数组的开始和结束位置intmax(inta,intb,intc){intd=a>b?a:b;returnd>c?d:c;}//必须经过mid和mid+1intmaxCrossingSum(int*nums,intleft,intmid,intright){......
  • 数组的使用
    #include<stdio.h>//数组的使用intmain(){ inti=0; //定义一个整形数组,最多存放10个元素 intarr[10]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<10;i++) { printf("%d",arr[i]); } printf("\n"); return0;}......
  • 数组
    数组的定义数组是相同类型数据的有序集合;数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称为一个数组元素,每个的数组元素可以通过下标访问它们。数组声明创建首先必须声明数组变量,才能够在程序中使用数组。下面是声明数组变量的语法:......