摘要:
题目链接。分析:本题可以用树状数组,也可以用线段树。树状数组:对于树状数组,请详见本随笔。要注意的是,比如说上图,要求 2 到 4 之间的最大值, c[4] 并非 2 到 4 之间的最大值,因为 c[4] 是 1 到 4 之间的最大值。这时候就只能单独看A[4], A[3], A[2]了。AC代码:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int maxn = 200000 + 10;int n 阅读全文
posted @ 2013-05-03 09:46
Still_Raining
阅读(217)
评论(0)
推荐(0)
摘要:
树状数组又称二叉索引树(Binary Indexed Tree,BIT),是一种解决动态连续和查询问题的数据结构。辅助数组 C: Ci= Ai-lowbit(i)+1 + Ai-lowbit(i)+2 + ... + Ai其中 lowbit(x) 代表 x的二进制表达式中最右边的1所对应的的值, 那么lowbit(x) = x & -x即C[6] 代表 A[5] 和 A[6] 的和, C[4] 代表 A[1] + A[2] + A[3] + A[4]那么如何求前缀和 Si 呢, 顺着结点i往左走, 边走边“往上爬”, 把沿途经过的 Ci 累加起来就可以了。int sum(int x){ 阅读全文
posted @ 2013-05-03 09:38
Still_Raining
阅读(273)
评论(0)
推荐(0)
浙公网安备 33010602011771号