树状数组
韦我独尊-德天独厚
这个作者很懒,什么都没留下…
展开
-
POJ1195 Mobile phones 二维树状数组的应用
这题可以用线段树离散化做,用二维树状数组做了一下,不懂得可以看一下这篇文章:http://www.java3z.com/cwbwebhome/article/article1/1369.html?id=4804题意:给你一个s*s的正方形区域,先输入一个x,若x==0,则再输入一个s,若x==1,则输入x,y,a,表示矩阵中(x,y)这点的值加上a,若x==2,输入l,b,r,t,原创 2014-04-29 20:22:30 · 750 阅读 · 0 评论 -
Codeforces Round #220 (Div. 2) D 树状数组 && 二分
/*题目*/题意:给了n,m,然后一个包含m个数的数组nnum,数组默认从小到大排序,然后是 n个操作,输入一个数x,若x为0,把0加到这个字符串的末尾,若x为1,把1加到这个字符串的末尾,若x为-1,那么把字符串里的 下标 与 nnum数组里的元素相等的 给删除,字符串一开始是空的,问你最后字符串里有什么,若为空 就输出 POOR STACK这题目看这操作一般都很容易联想到线段原创 2014-11-29 20:11:32 · 663 阅读 · 0 评论 -
Codeforces Round #225 (Div. 1) C 树状数组 || 线段树
看到这题很开心啊,有印象跟以前做过的很像,貌似最近就做过一个,以时间戳为区间来建立树状数组,然后一开始我以为题意是,给x点加val,它以下的所有节点都加-val;所以一开始就以 加 和 减 建立了两个树状数组,最后 减去就是答案,写完发现跟案例对不上啊,读了题目也没发现读错了,对于那句话 我理解错了,后来看了 这个:http://blog.csdn.net/keshuai19940722/ar原创 2014-11-22 21:40:51 · 827 阅读 · 0 评论 -
CodeForces 396C 树状数组 + DFS
这题目一开始看到了就想到了线段树或者树状数组,但是对于一个节点的所有子节点加权有所疑惑,后来看到根树这个条件,就像到了 那么1号点肯定在第一层,那么建立单向边往下搜,然后记录一下 每一个节点所在的 层,最后 两个节点 相差的 层数就知道了,就容易加权处理了,然后就开始建立数组了,后来一直爆错,后来发现 是范围有问题,这样直接建立是错的,因为不知道具体范围,数字太大了, 所以参考了一下http:原创 2014-11-07 20:56:55 · 989 阅读 · 0 评论 -
Codeforces Round #261 (Div. 2) D 树状数组应用
看着题意:[1,i]中等于a[i]的个数要大于[,jn]中等于a[j]的个数 且iint n;int aa[1000000 + 55];int bb[1000000 + 55];int c[1000000 + 55];map mp;ll lowbit(ll x) { return x&(-x);}void add(int i,int val) { while原创 2014-08-16 20:36:55 · 878 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number 树状数组&&线段树
题目给了你一串序列,然后每次 把最后一个数提到最前面来,直到原来的第一个数到了最后一个,每次操作都会产生一个新的序列,这个序列具有一个逆序数的值,问最小的你逆序数的值为多少逆序数么 最好想到的是树状数组,敲了一把很快,注意把握把最后一个数提上来对逆序数的影响即可,#include#include#include#include#include#includ原创 2014-06-30 19:26:48 · 655 阅读 · 0 评论 -
POJ3067 Japan 树状数组的应用
这题以前做过,用的线段树,现在用树状数组做一次,题意:给你n个城市在日本左边,m个城市在日本右边,然后k条路,问你这k条路有几个交点,注意城市的序号其实就是一维坐标所在位置,所以就是两条平行的数轴,上面有点,而且之间有连线,问你有多少交点一开始不好想把,这种题目也就排排序来试试看了,先对要修建的公路进行排序,然后再看这样是否可以更加方便的求出交点的数论,取路的左边点为先决条件从小到大排列,原创 2014-04-28 22:11:36 · 708 阅读 · 0 评论 -
HDU2852 KiKi's K-Number 树状数组+二分
这题就是给了你三种操作,1:往容器中一个元素 x2::把容器中的元素x删除3:查询比 x大的第k个数想法:添加元素跟删除元素 直接是以数本身为序号然后以 value值为1和-1即可,相当于计数,至于找比x第k个大的数,那就看看当前往后数k个数的第一个数是哪个就可以了,一开始直接找出来,然后往后暴力的扫了一遍,结果错了,没关系,反应很快,直接改了个二分查找,然后就过了,弄清原创 2014-04-28 21:01:09 · 729 阅读 · 0 评论 -
HDU1166 敌兵布阵 树状数组水题
中文题目,很简单的题目,区间求和,当然对于线段树来说也很水,为了练习一下树状数组,多做做水题吧,加深理解,并且打好基础,我算是被没打好基础给吓坏了,宁可多花几个小时 刷刷水题扎实点,很裸的题目 操作也很裸,了解树状数组的肯定能做#include#include#include#include#include#include#include#include#inclu原创 2014-04-28 20:31:30 · 748 阅读 · 0 评论 -
POJ2481 Cows 树状数组的简单应用
题意给了你N头牛,每头牛的强壮值是一个区间[s,e],如果第 i 头牛比第 j 头牛强壮那么必须满足 Si Ej - Sj;为了满足这三个条件我们进行排序,先以e降序排为先决条件,若e相等则让s升序排列,如此即可满足三个条件,这道题目任意两头牛的强壮值区间有可能完全一样,这样就不需要重新用树状数组求一次和了,直接赋值即可,这样可以省很多时间,因为已经排序处理了,所以即便区间相等的 肯定就是原创 2014-04-28 16:23:30 · 719 阅读 · 0 评论 -
HDU2838 Cow Sorting 树状数组 区间求和加逆序数的应用
这题目意思很简单,就是给你一个数组,然后让你重新排好序,排序有要求的,每次只能交换两个元素的位置,交换需要一个代价 就是两个元素之和,问你把数组重小到大排好最少需要多少代价可能一开始想不到逆序数,我是专门做专题往那边想才想到的,举个例子吧数组: 9 1 0 5 4此时到 0 的时候,我们先手写一下最小代价,然后再按照自己的猜测去看看,就是当前扫到0,那么前面比它大的数有2个,所原创 2014-04-22 00:39:45 · 1766 阅读 · 0 评论 -
POJ2352 Stars 树状数组简单应用
题目让你求星星等级,对于每个星星都会有 x,y,坐标,对于某一个星星的等级就是 所有x坐标以及y坐标都小于等于它的坐标的 星星总数,题目给n个星星,然后输出星星等级为等级0到n-1的 的数量因为星星的y坐标输入情况是不会出现大小下降的情况,然后所有点的坐标是不会重复的,所以直接只对x坐标进行处理就可以了,那么就是利用树状数组 对于 x坐标加进去的 求和,即为 小于它的数目,再加上1也就原创 2014-04-22 20:01:50 · 737 阅读 · 0 评论 -
HDU1556 Color the ball 树状数组 修改区间值 查找单点值
以前记得看到过树状数组能做的 线段树肯定可以做,反过来不行 这句话,所以没去学树状数组,现在补一下吧看到这道题,还是手痒敲了一把线段树,可是不知道为什么超时了,改了几把还是超时,真心不知道哪里出问题了,后来看了别人的题解,发现没什么他们的跟我的没什么大区别,后来复制了他们的去交了一把,发现大家的都超时了,可能题目的数据范围被被修改了,不过还是贴出超时,代码希望路过有大神可以指点一原创 2014-04-21 20:27:26 · 936 阅读 · 0 评论 -
POJ2155 Matrix 二维树状数组的应用
有两种方法吧,一个是利用了树状数组的性质,很HDU1556有点类似,还有一种就是累加和然后看奇偶来判断答案题意:给你一个n*n矩阵,然后q个操作,C代表把以(x1,y1)为左上角到以(x2,y2)为右下角的矩阵取反,意思就是矩阵只有0,1元素,是0的变1,是1的变0,Q代表当前(x,y)这个点的状况,是0还是1?区间修改有点特别,但是若区间求和弄懂了应该马上就能懂得:原创 2014-04-29 21:53:51 · 704 阅读 · 0 评论 -
HDU5122 K.Bro Sorting 树状数组类逆序数应用
题意很简单,看案例就能懂,一个长度为n的序列,要重新排序,升序,每一次拿这个数跟后面所有数比较,需要移动尽可能往后面移动,问需要操作几次对案例进行分析,从后往前面判,若发现前面有比当前这个数大的数答案就加1,但是发现后面很难讨论清楚,还得正向来分析,当前这个数,若后面有数字比它小,那就肯定需要操作一次的,由此想到了树状数组求逆序数中的一个操作,树状数组求逆序数就是需要先求出当前树状数组里面有多原创 2014-12-02 14:27:56 · 859 阅读 · 0 评论