Problem DescriptionMemphis loves xor very musch.Now he gets an array A.The length of A is n.Now he wants to know the sum of all (lowbit(Ai xor Aj) (i,...
分类:
编程语言 时间:
2015-06-13 22:53:56
阅读次数:
226
#include #define MAXN 1100using namespace std;long _m[MAXN][MAXN];//C数组int n;void init();long Lowbit(int t);long sum_b_e(int x,int y);void plus(int x,...
分类:
其他好文 时间:
2015-06-09 15:45:45
阅读次数:
104
原来听到树状数组这名字感觉很难,很高大上。学了一下发现不难。而且很好。普通的数组修改某个值耗费为O(1),输出和为O(n);而树状数组为O(logn);lowbit(x){ return x&(-x);}返回的是x二进制最后一位1的位置;有公式:cn=a(n-a^k+1)+.........+a.....
分类:
编程语言 时间:
2015-06-07 20:12:05
阅读次数:
233
树状数组是和线段树类似的数据结构,基本上树状数组可以做的线段树都可以做;树状数组就是一个数组,在信息记录上有一些特点,以动态求前n项和为例:可以改变数组的某一个元素,求前n项和;数组tree[ i ]记录的是A[ i - lowbit ( i )+1]~A[ i ]的和,lowbit(i),表示i的...
分类:
编程语言 时间:
2015-06-02 13:08:07
阅读次数:
117
分析:注意队列中保存的是排序后数组中的下标。树状数组也是根据下标进行处理。
#include
#include
#include
using namespace std;
#define N 10005
int c[N<<2];
int n,a[N],b[N];
char str[N][10];
int lowbit(int x)
{
return x&(-x);
}
voi...
分类:
编程语言 时间:
2015-06-01 22:52:25
阅读次数:
191
二维树状数组:add: (x,y)位置的元素值加d;sum:查询(1,1)~(x,y)子矩阵元素和;注意树状数组的元素,下标都要从1开始。void add(int x, int y, int d) { int i, j; for(i = x; i 0; i -= lowbit(i)) ...
分类:
编程语言 时间:
2015-05-18 16:12:42
阅读次数:
139
这道题好像有点简单的样子...absi找题目好厉害啊...确实是一道比较裸的2dBIT啊.水掉吧.附:2dBIT怎么做:2dBIT就是BIT套BIT啦.所以修改loop(x+=lowbit(x)){loop(y+=lowbit(y)){}}查询loop(x-=lowbit(x)){loop(y-=l...
分类:
Web程序 时间:
2015-05-05 18:43:58
阅读次数:
122
Tree[N] = A[N-2^k+1] + … + A[N]
单点更新,区间求值:树状数组代表区间的和。const int MAXN = 100010;
int N,Tree[MAXN];int Lowbit(int i)
{
return i & (-i);
}void Update(int i,int x)
{
while(i <= N)
{
Tree...
分类:
编程语言 时间:
2015-05-05 08:53:55
阅读次数:
163
1 int s[N],a[N];//离线瞎搞 2 int n,q,ans[M]; 3 int nxt[N]; 4 mapmp; 5 struct Question{ 6 int l,r,id; 7 bool operator0;i-=lowbit(i))17 re...
分类:
其他好文 时间:
2015-04-08 01:00:42
阅读次数:
117
树状数组树状数组树状数组可以在 O(logn)时间内完成:给 a[i] 加上一个数求 a[1]+...+a[i] 的和int lowbit(i) { return x & -x;}lowbit(7):111 & 001=> 001lowbit(8):1000 & 1000=> 1000lowbit(...
分类:
编程语言 时间:
2015-04-01 21:49:22
阅读次数:
167