树状数组
2016-04-26 23:27
190 查看
有一部分的题目涉及到区间的修改,通常会使用线段树和树状数组,而树状数组的代码较为简单。
下面是修改点求区间和的代码:
const int N =1000000;
int tree
;
int lowbit(int x)
{
return x&(-x);
}
void Update(int x,int value) //让a[x]加上value
{
for(int i=x;i<N;i=i+lowbit(i))
tree[i]+=value;
}
int Get(int x)
{
int sum=0;
for(int i=x;i;i=i-lowbit(i))
sum+=tree[i];
return sum;
}
修改区间求点的代码:
const int N = 1000000;
int tree
;
int lowbit(int x)
{
return x&(-x);
}
void Update(int x,int value)
{
for(int i=x;i;i-=lowbit(i))
tree[i]+=value;
}
int Get(int x)
{
int sum=0;
for(int i=x;i<N;i+=lowbit(i))
sum+=tree[i];
return sum;
}
下面是修改点求区间和的代码:
const int N =1000000;
int tree
;
int lowbit(int x)
{
return x&(-x);
}
void Update(int x,int value) //让a[x]加上value
{
for(int i=x;i<N;i=i+lowbit(i))
tree[i]+=value;
}
int Get(int x)
{
int sum=0;
for(int i=x;i;i=i-lowbit(i))
sum+=tree[i];
return sum;
}
修改区间求点的代码:
const int N = 1000000;
int tree
;
int lowbit(int x)
{
return x&(-x);
}
void Update(int x,int value)
{
for(int i=x;i;i-=lowbit(i))
tree[i]+=value;
}
int Get(int x)
{
int sum=0;
for(int i=x;i<N;i+=lowbit(i))
sum+=tree[i];
return sum;
}
相关文章推荐
- 简单二分
- Android学习路线
- spring框架学习笔记(八)
- VirtualBox下Kali linux 2016.1安装之后的简单设置
- bzoj3998【TJOI2015】弦论
- 素数与溢出在spark的应用
- 第四次c++作业
- 引用第三方开源xUtils时出现的错误
- Android TextView 不能直接传递int型数据
- GCD中的队列与任务
- 团队任务个人博客--20160426
- Objective-C-内存管理相关知识
- linux配置jdk环境变量
- 串行还是并行
- 个人记录必备网站
- 概念源于生活
- 关于浮动及定位
- 经典排序之归并排序
- like关键字优化
- libevent -简单的异步IO介绍