数据结构——树状数组
倚剑笑紅尘
教练,我想学kaldi!
展开
-
poj 1990 MooFest(树状数组)
题目链接:http://poj.org/problem?id=1990思路: 树状数组分析:1 题目给定n头牛的听力v[i]. 现在规定两头你i和j如果要进行交流的话那么消耗的能量就是dis(i,j)*max(v[i].v[j]),现在问n头牛总共的n*(n-1)*2种方式消耗的总的能量2 题目要求的是所有的牛的交流方式的总的消耗能量 看这个样例 3 1转载 2017-07-20 10:37:23 · 176 阅读 · 0 评论 -
2018牛客网暑假多校第一场J(树状数组+思维)
题目链接;传送门题目大意:有一个n个数的数列,并由q个询问,每一个询问有一个l和r,问你在区间a1—al和ar—an这两个区间中有多少个不同的数。题目思路:题目表面上意思是求两个区间中不同数的个数,因为数据范围比较大,因此需要使用树状数组,并且使用离线操作。首先我们先考虑如何求一个区间中不同的数的个数,我们可以先对询问按照他的区间右端点的大小进行排序。然后每当一个数出现,如果这...原创 2018-07-27 22:14:11 · 184 阅读 · 0 评论 -
树状数组总结(转)
转载链接:传送门目录:① 单点修改、区间查询 树状数组 原理② 区间查询、单点修改 树状数组③ 区间查询、区间修改 树状数组④ 二维树状数组 单点修改、区间查询 二维树状数组 区间修改、单点查询 二维树状数组 区间修改、区间查询 二维树状数组①单点修改、区间查询BIT:首先当然是最基础的树状数组了,单点修改、区间查询的树状数组代码://BI...转载 2018-08-03 17:38:27 · 275 阅读 · 0 评论 -
牛客多校联赛第二场j-farm(二维树状数组+hash)
题目链接:传送门题目大意:有一个n*m的矩形,每个位置有一个数。有T次操作,每次往一个子矩形的每个格子中放入一个数。求有多少个格子中被放入了至少一个与对应位置不相同的数。n*m<=1e6,T<=1e6题目思路:每次放入一个数,如果操作若干次后,将放入的所有数相加除以对应位置的数,如果整除则放入的数和对应的位置数相同。这是一个不充分但必要条件。即可能会出现一些特殊...原创 2018-08-03 17:33:25 · 224 阅读 · 0 评论 -
ZOJ 2112 Dynamic Rankings (动态第k大,树状数组套主席树)
题目链接:题目大意:询问一个区间的第k大 但是有操作会对某个位置的值进行改变 即动态第k大思路:树状数组套主席树普通主席树装未修改的数据树状数组套主席树装的是修改的数据,即修改操作在树状数组中进行#include #include #include #include #include #include #include #include #include原创 2017-08-12 20:21:26 · 302 阅读 · 0 评论 -
poj 3321 Apple Tree(树状数组)
转载自:http://blog.csdn.net/chenguolinblog/article/details/10049049题目链接:http://poj.org/problem?id=3321题目大意:给定一棵树,然后有n个树枝,然后给出n-1条枝条得连接,每个树枝上面初始化有1个苹果现在有m个操作C x在x树枝上有苹果则为摘掉 没有的话长出一个Q x 以x为根节转载 2017-07-19 22:17:30 · 181 阅读 · 0 评论 -
poj 2155 Matrix(树状数组)
题目链接:http://poj.org/problem?id=2155题目大意:提供一个 M*N的矩阵,其中每一个格子中的数不是 1 就是 0, 初始时每一个格子的值为 0 ,我们可以修改这个矩阵中的数字,每次给出矩阵的左上角坐标(x 1 ,y 1 ) ,以及右下角的坐标(x 2 , y 2 ) ,并且将矩阵中的数字全部取反(原来是 1 现在变成 0 ,原来是0 现在变成 1),还可以每次原创 2017-07-19 19:58:48 · 176 阅读 · 0 评论 -
poj 2029 Get Many Persimmon Trees(树状数组)
题目链接:http://poj.org/problem?id=2029题目大意:给定一个人h*w的矩阵,给定n个点表示该点上面有柿子树,求给定一个t*s的矩阵的最多的柿子树的个数思路:简单的二维树状数组,加入一个点的时候更新树状数组题目的范围最大为100,很明显就是要暴力枚举起点,然后求最大值即可#include#include#include#includeu原创 2017-07-19 17:58:28 · 220 阅读 · 0 评论 -
poj 3067 Japan(树状数组)
题目链接:http://poj.org/problem?id=3067题目大意:给出t个样例每个样例给出n个左边的点 m个右边的点 k条左边点连右边点的线 问最多有几个交点,每个交点最多有两条线经过思路:一:总体的思路先来分析下什么样的情况两条线会有交点:即相交的情况必然是在在LiRj所以我们先按照左边的由小到大的顺序排序,在对每条线查找右边点比他的个数原创 2017-07-19 17:02:29 · 241 阅读 · 0 评论 -
poj 2481 Cows(树状数组)
题目链接:http://poj.org/problem?id=2481题目大意:1 题目给定n头牛所在的区间,然后问每头牛都有几头牛比它强壮2 根据题目如果牛i的区间是[Si , Ei],牛j的区间是[Sj , Ej]那么牛i要比牛j强壮的话那么就有Si = Ej && Si-Ei != Sj-Ej;思路:一:总体的思路先对每个牛排序,然后对每头牛查找比他的力量大的原创 2017-07-19 15:47:06 · 247 阅读 · 0 评论 -
poj 1195 Mobile phones(树状数组)
题目链接:http://poj.org/problem?id=1195题目大意:1 .0 n 给定一个n*n的所有点都为0的矩阵1 a b x表示把[a,b]值加上x2 x1 y1 x2 y2表示x1<= x <= x2 , y1 <= y <= y2求这个小矩形的面积3 表示输入结束2 简单的二维树状数组,但是这边要注意的是操作2的时候一定不能够把维度给弄反了原创 2017-07-19 11:50:36 · 221 阅读 · 0 评论 -
poj 2352 Stars(树状数组)
题目链接:http://poj.org/problem?id=2352思路:树状数组分析:1 题目是要求出每一个点的左下(正左+正下)有几个星星,那个这个点就是第几层,最后输出0~n-1层的点的个数。比如样列编号为5的星星,左下有3个星星那么5就处于第三层2 利用树状数组,我们知道树状数组C中,C[i]表示的是原先数组A中的某一段和。题目明确指出输入的时候是按照y值增大的顺序(原创 2017-07-18 22:02:22 · 214 阅读 · 0 评论 -
poj2299 Ultra-QuickSort(数状数组)
题目链接;http://poj.org/problem?id=2299题目大意: 给出n个数 求他逆序对数的对数思路:1.离散化+树状数组2 题目的输入个数有500000的规模但是每个数的最大值为999999999,因此我们需要离散化这些数据3 对于数据9 1 0 5 4我们离散化成5 2 1 4 3那么对于输入一个树a[i]我们去求一下它的离散化后的id,然后去求前面原创 2017-07-18 21:28:44 · 288 阅读 · 0 评论 -
树状数组专题【完结】
转载:http://blog.csdn.net/chenguolinblog/article/details/9916229转载 2017-07-18 16:57:26 · 267 阅读 · 0 评论 -
hdu 2852 KiKi's K-Number(树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852思路: 树状数组分析:1 题目给定三种操作: 0 x 表示把x插入容器 ; 1 x 表示删除一个x如果没有x则输出 No Elment! ; 2 a k 表示比a大的数中的第k大的数 如果没有输出No Find!2 我们先来看一下树状数组的功能,树状数组能够在在logN的时间内原创 2017-07-20 11:48:09 · 179 阅读 · 0 评论 -
牛客网暑期ACM多校训练营(第五场)F.take 思维+树状数组
题目链接:https://www.nowcoder.com/acm/contest/143/F题目大意:有 n 个箱子,第 i 个箱子有 p[i] 的概率出现大小为 d[i] 的钻石现在 小A 一开始手里有一个大小为 0 的钻石,他会根据 i 从小到大打开箱子,如果箱子里有钻石且比小 A 手中的大,那么小 A 就会交换手中的钻石和箱子里的钻石求期望的交换次数1<=n&...原创 2018-08-10 17:23:18 · 130 阅读 · 0 评论