树状数组
Keter_Plus
这个作者很懒,什么都没留下…
展开
-
POJ 2352 Stars
新人第一次接触树状数组,上课也没有好好听讲,这里把做题的时候的一些经验稍微总结一下以免以后忘掉:1、对于一个树状数组c[n],其中每个元素的值是对应的原数组a[n - 2^k +1]到a[n]的所有数字的和;2、其中的k为数字n的最低的不为0的位的位置,习惯上将2^k称为low_bit,求low_bit的方法为n&(-n);3、每一个节点c[i]管辖的范围的宽度都是2的幂数,low_bit(i)求出来的原创 2015-11-17 16:41:44 · 268 阅读 · 0 评论 -
POJ 2299 Ultra-QuickSort
这个题目的本质是求一个数组的逆序对的数量,在线性代数里面一个求逆序对数量的方法是,每次取所有剩余数字当中最小的数,然后数一数这个数前面有多少已经取出来的数字,即为当前这个数字所贡献的逆序数,所以本题就要模拟这个过程,排序之后每次取出最小的数然后开始数但是直接的模拟会导致超时,因此采用树状数组对已经取出来的点的个数进行记录,每次求和然后更新注意用long long 存储最后的答案#include <i原创 2015-12-17 14:27:07 · 296 阅读 · 0 评论 -
POJ 2481 Cows
这道题是要求e更大且s更小的牛的数量,首先把所有的数据读入之后按照e从大到小,e相同的情况下s从小到大的顺序来排列;从头开始遍历,这样能够保证e一定比前面的小,只要数前面有多少个s比自己的s小就可以计算出来有多少牛比自己更强,这种每次都要遍历数前面有多少个s比自己小的题目最好使用树状数组,能够更快地检索。#include <iostream>#include <cstdio>#include <原创 2015-12-18 13:13:13 · 163 阅读 · 0 评论