####题意 给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 ####题解 可以将数组nums中的数组先离散化、去重。用树状数组维护这些数字出现的次数,区间[0,l] ...
分类:
其他好文 时间:
2020-07-22 15:38:15
阅读次数:
73
分析:$f[i][j][k]$表示$i到2k$行和$j到2k$列的矩阵中的最大值,可以从四个部分状态转移过来,\(f[i][j][k - 1], f[i + (1 << (k - 1))][j][k - 1]), f[i][j + (1 << (k - 1))][k - 1], f[i + (1 < ...
分类:
其他好文 时间:
2020-07-21 23:21:36
阅读次数:
75
题意: 每次翻转一段区间,询问翻转区间后整个序列的逆序对数量。 题解: 每次翻转区间,那么翻转区间的答案就是整个序列的原始答案减去这个区间里逆序对的数量加上顺序对的数量。 统计逆序对和顺序对用树状数组做。 #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
st表是一个求RMQ问题的一种比线段树查询时间复杂度要小的算法 st表的主体是一个二维数组st[i][j],表示需要查询的数组的从下标i到下标i+2^j - 1的最值,这里以最大值为例 首先应该预处理log函数 因为向下取整所以可以这么来做: int mlog[N]; void pre(int n) ...
分类:
其他好文 时间:
2020-07-19 23:31:24
阅读次数:
84
离散化 蒟蒻因为即将学习主席树,发现离散化这个东东不太会,所以写一篇博客记录一下。 概念 离散化,就是把无限空间中有限的个体映射到有限的空间中去,以提高算法的时空效率。(来自百度百科) 作用 ? 很多算法的复杂度与数据中的最大值有关,比如树状数组和纯用数组实现的一对一标记。时常会遇到这种情况:数据的 ...
分类:
其他好文 时间:
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