树状数组
努力写题的tyf
这个作者很懒,什么都没留下…
展开
-
树状数组 - 点更新、区间查询
树状数组基础树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和.另外一个拥有类似功能的是线段树.具体区别和联系如下:1.两者在复杂度上同级, 但是树状数组的常数明显优于线段树, 其编程复杂度也远小于线段树.2.树状数组的作用被线段树完全涵盖, 凡是可以使用树状数组解决的问题, 使用线段树一定可以解决, 但是线段树能...原创 2019-04-18 10:50:18 · 174 阅读 · 0 评论 -
树状数组、线段树求逆序对
step1 离散化当数字范围很大的时候需要离散化,比如:2333333 9999999999 1我萌也开不了那么大的数组呀,所以我们进行离散化:(1)排序:1 2333333 9999999999(2)重新分配值:1 2 3具体代码:for(int i=1;i<=n;i++){ scanf("%d",&p[i].val); p[i].pos=...原创 2019-04-18 11:19:24 · 158 阅读 · 0 评论 -
树状数组区间更新、单点查询
区间更新:设a数组表示原来的区间c[i]:=a[i]-a[i-1],这样可以看出:a[i]=sum(c[1],c[2]…c[i])例如:a:1 3 4 2 6 8c:1 2 1 -2 4 2树状数组维护的是c数组当把a[3,5]每个数都加2时,我们看c数组,由于c数组维护的是相邻区间的差值,所以c[3]+=2因为区间[3,5]都加了2,所以在c[4],c[5]的值不...原创 2019-04-23 09:37:51 · 223 阅读 · 0 评论 -
1540:打鼹鼠 - 二维树状数组(单点更新+区间查询)
1540:打鼹鼠_二维树状数组时间限制: 1000 ms 内存限制: 524288 KB提交数: 185 通过数: 37【题目描述】这是一道模板题。给出一个 n×m的零矩阵 A,你需要完成如下操作:1xyk:表示元素 Ax,y自增 k;2abcd:表示询问左上角为 (a,b),右下角为 (c,d) 的子矩阵内所有数的和。【输...原创 2019-04-24 21:04:36 · 1319 阅读 · 1 评论 -
1539:简单题 - 树状数组
思路:维护两个树状数组分别记录L和R当每询问一次的时候(坐标为x):(1)在L中找到sum(x) 即左端点在区间[1,x]的个数n1(2)在R中找到sum(x-1) 即右端点在区间[1,x-1]的个数n2ans=(n1-n2)%2代码如下:#include<iostream>#include<cstdio>#include...原创 2019-04-24 21:12:12 · 1002 阅读 · 0 评论 -
poj3468 - A Simple Problem with Integers - 树状数组(区间更新、区间查询)
A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072K Total Submissions: 168624 Accepted: 51960 Case Time Limit: 2000MS DescriptionYou have N integers, A1, A...原创 2019-08-20 16:52:26 · 167 阅读 · 0 评论 -
poj1990 - MooFest - 两个树状数组
MooFestTime Limit: 1000MS Memory Limit: 30000K Total Submissions: 10529 Accepted: 4807 DescriptionEvery year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a s...原创 2019-08-12 09:59:44 · 200 阅读 · 0 评论 -
poj2155 - Matrix - 思维+二维树状数组
MatrixTime Limit: 3000MS Memory Limit: 65536K Total Submissions: 35800 Accepted: 12880 DescriptionGiven an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the num...原创 2019-08-12 11:59:30 · 139 阅读 · 0 评论