![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
文章平均质量分 79
Jason_Wcz
这个作者很懒,什么都没留下…
展开
-
POJ 2299 Ultra-QuickSort (树状数组)
题目链接 题目大意很简单,给一个序列的数字,只有相邻的数字可以交换位置,最后要使之顺序排列,求总共要进行几次交换。 思路是这样:从1到N个数,只有碰到左边的数比右边的数大时,才需要交换。那么就只要求出每个数,它的右边有多少个比它小的数(即逆序数),然后把求出来的结果加在一起,就是一共需要交换的次数。那又是怎样想到用树状数组呢? 我们知道树状数组可以拿来维护1 - N 这样一个区间的信息,那我原创 2017-12-25 17:13:23 · 171 阅读 · 0 评论 -
HDU 1166 敌兵布阵 (线段树基础&树状数组基础)
题目链接 线段树和树状数组,都是用来维护区间信息的,并且都有较高的效率来查询(都是logn级,但树状数组在效率上还是略快于线段树)或者修改信息。 线段树在建树的时候,要开4倍的空间。 树状数组只需要另开一个维护数组。 线段树的代码更繁琐,但它可以区间更新,而树状数组只能单点更新。 因此,当题目不需要区间更新的时候,树状数组优先,反之则只能用线段树。 通过HDU 1166这题可以体会...原创 2017-12-18 14:44:12 · 167 阅读 · 0 评论 -
POJ 1990 MooFest (树状数组)
题目链接 题意不多赘述,思路是:既然每次我们都需要取两个牛间v值大的来跟距离乘,那索性就按v值来先排序。这样可以保证,每次都选择当前这头牛的v来做运算。然后计算结果还需要一个值就是这头牛,到所有v比它小的牛的距离和,这个距离和就需要两个树状数组来计算: 假设当前我们需要算第 i 头牛 一个dis[i]来记录1到i-1所有牛的位置和,再用第 i 头牛的位置乘他前面那么多头牛的数目得到这原创 2018-01-19 20:50:40 · 140 阅读 · 0 评论 -
小朋友排队 (树状数组)
题目描述 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加原创 2018-02-07 19:56:05 · 663 阅读 · 0 评论 -
PAT (Advanced Level) 1057 Stack (树状数组+二分)
第一遍理解错了题意,以为是找栈中间位置那个元素。。。然后兴高采烈手写了个栈以及各种操作权当复习数据结构,结果样例都过不了。。。仔细查了查数据才意识到是找中位数=_= 这题找中位数,范围1e5,树状数组就可以,然后由于数据可能比较稀疏,全扫一遍肯定TLE,因此加个二分。 顺便这题发现个问题,不知道是不是PAT字符串数组不能用char * s;来初始化,一旦用就是段错误,C++的字符和字符串的原...原创 2018-09-01 14:11:00 · 169 阅读 · 0 评论