树状数组
vufw_795
Mood decides everything.
展开
-
树状数组(初识)
参考:树状数组简述:一个用来求数组列前缀和的数据结构,可以在O( log(n) )的时间内得到数列的任意前缀和,同样以相同时间对某项加一个常数,是一个很强大的数据结构。认识:有段时间一直以为树状数组就是普通的数组,只不过可以用它来存储二叉查找树,后来才知道这货其实是一个很难的东西。不过说难,其实它也是一个蛮简单、蛮好入手的一个东西——关键代码相当简洁,只是有点难以理解,但是,用一个图就可以表达清楚了原创 2015-03-28 13:54:57 · 560 阅读 · 0 评论 -
树状数组(一)
题目链接:HDU 1541解题思路:树状数组基础题目 常规做法果断得超时,于是得用树状数组来解决,但是本人作为一个初学者表示根本想不懂,于是乎看了个博客,想了一下,然后就懂了。 首先这题跟y并没有关系,因为排好序的了,所以原创 2015-03-28 14:49:05 · 501 阅读 · 0 评论 -
树状数组(二)
题目链接:HOJ 2275题意分析:给你一个大小为50000的数组a,要求在1秒内求出数组中满足{ i < j < k , ai < aj > ak }的组合数。(0 <= ai <= 32768)解题思路:虽然数组很大,但是数组里的数很小啊,所以桶排一下,然后树状数组求和就行了: 首先我们已经在HDU 1541这题中学会了怎么求在ai前面比ai小的数的量了,那么这题就是求在ai前面比ai小的数的原创 2015-03-29 10:07:34 · 662 阅读 · 0 评论 -
树状数组(三)
题目链接:codeforces 220B题意分析:有n个数,m次询问,一开始给你这n个数ai,每一次询问的时候给你一个区间,求这个区间里面满足“数值为x,出现了x次”的条件的数有几个!(1 ≤ n, m ≤ 100000) 从题述上看,这题的难点应该是区间的频繁访问,于是可以想到线段树或者树状数组解题思路: 即便是线段树或者树状数组这种高端数据结构,有时候也是需要一些辅助算法的,在这道题里面,辅助原创 2015-04-08 08:25:03 · 448 阅读 · 0 评论 -
CodeForces 301D(树状数组)
题目链接:codeforces 301D题意分析: 给你n , m两个数,1 ≤ n, m ≤ 2e5,n代表n个不同数字,且这些数字都在区间[ 1 , n ]之间,这就说明1~n每个数出现一次。m代表m次查询,查询格式为两个整数x , y,问你区间[ x , y ]之间有多少对数a , b满足a%b==0。解题思路: 考察点是区间的频繁访问,马上想到线段树和树状数组,线段树太难写了没考虑过,就原创 2015-04-29 13:41:58 · 1242 阅读 · 0 评论