###树状数组 #####对于区间之间的增删查改,如果单纯按照之前的想法就是O(1)查询,然后O(n)的时间复杂度去进行修改。 #####而树状数组查询和修改都是O(logn)的复杂度 #####接下来详细讲一下树状数组的基本操作 #####数组A(原数组) /// 数组C(树状数组) #####原 ...
分类:
编程语言 时间:
2020-07-26 19:00:30
阅读次数:
64
####题意 给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 ####题解 可以将数组nums中的数组先离散化、去重。用树状数组维护这些数字出现的次数,区间[0,l] ...
分类:
其他好文 时间:
2020-07-22 15:38:15
阅读次数:
73
题意: 每次翻转一段区间,询问翻转区间后整个序列的逆序对数量。 题解: 每次翻转区间,那么翻转区间的答案就是整个序列的原始答案减去这个区间里逆序对的数量加上顺序对的数量。 统计逆序对和顺序对用树状数组做。 #include<bits/stdc++.h> using namespace std; co ...
分类:
编程语言 时间:
2020-07-21 23:21:03
阅读次数:
88
高级树状数组讲解:https://www.cnblogs.com/RabbitHu/p/BIT.html 树状数组 一维树状数组 单点修改,区间查询 https://loj.ac/problem/130 #include<bits/stdc++.h> #define INF 0x3f3f3f3f # ...
分类:
编程语言 时间:
2020-07-20 22:29:48
阅读次数:
77
离散化 蒟蒻因为即将学习主席树,发现离散化这个东东不太会,所以写一篇博客记录一下。 概念 离散化,就是把无限空间中有限的个体映射到有限的空间中去,以提高算法的时空效率。(来自百度百科) 作用 ? 很多算法的复杂度与数据中的最大值有关,比如树状数组和纯用数组实现的一对一标记。时常会遇到这种情况:数据的 ...
分类:
其他好文 时间:
2020-07-19 17:58:05
阅读次数:
58
树状数组 部分转自Xenny 前置芝士 什么是树状数组 用数组来模拟树形结构 可解决问题 解决大部分基于区间上的更新以及求和问题 和线段树的区别 树状数组可以解决的问题都可以用线段树解决,但是树状数组码量小,系数少(很多) 优点和缺点 修改和查询的复杂度都是O(logN),而且相比线段树系数要少很多 ...
分类:
编程语言 时间:
2020-07-19 17:57:33
阅读次数:
66
二维树状数组及(不会用到的)三维树状数组 前置芝士 一维树状数组(lowbit) 二维树状数组 二维树状数组涉及到两种基本操作,修改矩阵中的一个点,查询子矩阵的和 首先是修改点的操作: void update(int x,int y,int z){ //坐标为(x,y)的点增加z for(int i ...
分类:
编程语言 时间:
2020-07-19 17:57:19
阅读次数:
58
#树状数组 又名二叉索引树,是一种与线段树相似的数据结构 他们能使对一个区间的数修改以及查询的速度提升许多 ##树状数组模板1 #include<iostream> #include<cstdio> using namespace std; int tree[2333333]; int sum[23 ...
分类:
其他好文 时间:
2020-07-19 16:06:22
阅读次数:
52
跑ac自动机后使用fail树建立dfs序后跑树状数组维护答案 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e6+10; struct node{ int cnt; node * nxt ...
分类:
其他好文 时间:
2020-07-19 00:37:01
阅读次数:
84
主要讲一下状数组的建立和逆序对的求解方法 树状数组: 修改和查询的复杂度均为$O(\log n)$相比线段树的系数要少很多。 采用了二进制的方法建树,仅有左儿子而无右儿子. 建树过程: void update(int x,int y){//给x位置加上y while(x<=n){ d[x]+=y;x ...
分类:
编程语言 时间:
2020-07-15 22:44:24
阅读次数:
64