树状数组
Black__wing
acm菜鸡
展开
-
树状数组+离散化 学习心得
应用:用于计算各种“区间和”。时间复杂度:n*log2n基本概念及模板代码:求和原理:线段树求和是二分空间,而真正求和只需要用到其中的左侧空间,因此出现树状数组。lowbit函数:用于计算二进制最低位1所在位置的权值:代码:int lowbit(int x){ return x&-x;}树状数组中每个顶点覆盖的范围:[x-lowbit(...原创 2018-01-31 16:01:54 · 661 阅读 · 0 评论 -
HDU 1166 树状数组
Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视原创 2018-01-31 16:35:16 · 217 阅读 · 0 评论 -
HDU 1541
Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not higher and原创 2018-01-31 17:47:14 · 257 阅读 · 0 评论 -
树状数组学习例题(续)
1.洛谷p1972 离线+树状数组转载自:https://www.luogu.org/blog/Samle/solution-p1972求m个区间内有多少个不同的数,看到数据N <= 500000,M <= 200000,就不可能是暴力了,那么怎么求m个区间内不同数的个数呢?可以用树状数组。首先用一个used数组来对树状数组初始化,对于每个数,如果出现过就将其存入树状数组中。...转载 2018-07-30 20:08:33 · 249 阅读 · 0 评论 -
二分答案总结&例题解析
对于二分我们最初的了解,就是在一个一次函数中,对于要求的点,(x,y)已知y,对于包含x值的区间二分,根据函数值与y比较,逐步靠近要求的点,直到最终求出要求的点。在程序执行时,二分的时间复杂度为logn,可以极大的减少查找的时间。二分的应用严格来讲答案具有单调性的问题都可以用二分来解决,对于答案类似于一个一次函数,通过不断判断答案是否满足缩小区间。1:求最大值中的最小值:对...原创 2018-08-11 16:37:04 · 2129 阅读 · 2 评论 -
括号序列基础应用
对于x轴,我们想要在x轴上添加不同的几组数,最后我们想要得到(i,j)区间内共有几中数,括号序列,用于解决这种问题,非常方便。下面,例题加图解:nefu 校门外的树我们来看数据:5 41 1 32 2 51 2 42 3 5五个点,四个操作,下面画图解释括号序列:我们想要求3到5之间有多少树,只要求5(包括5)之前左括号减去3(不包括3)之前右括号数量,那么...原创 2018-08-11 17:06:32 · 371 阅读 · 0 评论 -
补题 nefu1494
链接·对于此题,求有多少对i,j那么现在我们有两个变量,很简单的想法,定一动一。那么我们对于一个串,我们首先处理前缀和,那么用a[n]-a[i]等于k的方式,就可以找到有多少个j,那么我们再从头找i,从头遍历i就可,对于i找他之后有多少个j直接加在ans上即可,那么我们就可以知道,共有多少对不同的i,j。对于i后面有多少个j,可以用树状数组的形式,或者第一步找的时候直接处理在数组中,这样就...原创 2018-09-05 19:17:20 · 148 阅读 · 0 评论 -
CF EDU 68 E树状数组判断直线之间构成矩形的个数
#include<bits/stdc++.h>using namespace std;const int maxn=200000;long long tr[maxn+100];struct node{ int x,l,r;};node q[200000],p[200000];int n;void add(int x,long long t){ whi...原创 2019-07-15 18:00:07 · 185 阅读 · 0 评论