示例#1
0
文件: main.cpp 项目: linmx0130/OJCode
	void Add(int x,int y,int c)
	{
		for (int i=x;i<=n;i+=LOWBIT(i))
		{
			for (int j=y;j<=n;j+=LOWBIT(j))
			{
				d[i][j]+=c;
			}
		}
	}
示例#2
0
文件: main.cpp 项目: linmx0130/OJCode
	int sum(int x,int y)
	{
		int ret=0;
		for (int i=x;i>0;i-=LOWBIT(i))
		{
			for (int j=y;j>0;j-=LOWBIT(j))
			{
				ret+=d[i][j];
			}
		}
		return ret;
	}
示例#3
0
void update(int x, int delta)
{
	while(x < 100001) {
		tr[x] += delta;
		x += LOWBIT(x);
	}
}
示例#4
0
int sum(int x)
{
	int sum = 0;
	while(x){
		sum += tr[x];
		x -= LOWBIT(x);
	}
	return sum;
}
示例#5
0
//插入单个元素 
void bit_update(int *a, int p, int d) {
	for ( ; p && p < MAXN ; p += LOWBIT(p))
		a[p] += d;
}
示例#6
0
//查询单个元素值 
int bit_query2(int *a, int p) {
	int s = 0;
	for ( ; p && p < MAXN ; p += LOWBIT(p))
		s += a[p];
	return s;
}
示例#7
0
//插入区间
void bit_update2(int *a, int p, int d) {
	for ( ; p ; p -= LOWBIT(p))
		a[p] += d;
}
示例#8
0
//查询区间
int bit_query(int *a, int p) {
	int s = 0;
	for ( ; p ; p -= LOWBIT(p))
		s += a[p];
	return s;
}