线段树模板
来源:互联网 发布:deepin linux软件中心 编辑:程序博客网 时间:2024/06/06 19:29
struct Line {
int left;
int right;
int cnt; //延迟标记
}a[MAX];
int n,m,l,r; //n长度,m线段数
int sum;
//函数中的num是节点编号
//构建
void Build(int l, int r, int num) {
a[num].left = l;
a[num].right = r;
a[num].cnt = 0;
if(l==r)
return ;
int mid = (a[num].left + a[num].right)/2;
Build(l, mid, num*2);
Build(mid+1, r, num*2+1);
}
//查询
void Query(int l, int r, int num) {
if(a[num].cnt!=0) {
sum += a[num].cnt*(r-l+1);
}
if(a[num].left == a[num].right)
return ;
int mid = (a[num].left + a[num].right)/2;
if(r<=mid)
Query(l, r, num*2);
else if(l>mid)
Query(l, r, num*2+1);
else {
Query(l, mid, num*2);
Query(mid+1, r, num*2+1);
}
}
//更新
void Change(int l, int r, int num) {
if(l==a[num].left && r==a[num].right) {
a[num].cnt++;
return ;
}
if(a[num].left == a[num].right)
return ;
int mid = (a[num].left + a[num].right)/2;
if(r<=mid)
Change(l, r, num*2);
else if(l>mid)
Change(l, r, mun*2+1);
else {
Change(l, mid, num*2);
Change(mid+1, r, num*2+1);
}
}
int left;
int right;
int cnt; //延迟标记
}a[MAX];
int n,m,l,r; //n长度,m线段数
int sum;
//函数中的num是节点编号
//构建
void Build(int l, int r, int num) {
a[num].left = l;
a[num].right = r;
a[num].cnt = 0;
if(l==r)
return ;
int mid = (a[num].left + a[num].right)/2;
Build(l, mid, num*2);
Build(mid+1, r, num*2+1);
}
//查询
void Query(int l, int r, int num) {
if(a[num].cnt!=0) {
sum += a[num].cnt*(r-l+1);
}
if(a[num].left == a[num].right)
return ;
int mid = (a[num].left + a[num].right)/2;
if(r<=mid)
Query(l, r, num*2);
else if(l>mid)
Query(l, r, num*2+1);
else {
Query(l, mid, num*2);
Query(mid+1, r, num*2+1);
}
}
//更新
void Change(int l, int r, int num) {
if(l==a[num].left && r==a[num].right) {
a[num].cnt++;
return ;
}
if(a[num].left == a[num].right)
return ;
int mid = (a[num].left + a[num].right)/2;
if(r<=mid)
Change(l, r, num*2);
else if(l>mid)
Change(l, r, mun*2+1);
else {
Change(l, mid, num*2);
Change(mid+1, r, num*2+1);
}
}
0 0
- ACM 线段树模板(模板)
- 线段树模板
- hdu_1166_线段树模板
- 线段树模板
- 线段树模板 poj2777
- 线段树模板
- 线段树模板
- 线段树-模板
- 线段树模板
- 线段树模板
- 线段树模板
- Hdu1166-- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- 线段树模板
- linux下安装java环境
- ROS学习笔记
- 给Eclipse设置android的SDK位置时,出现这个:This Android SDK requires Andr...ate ADT to the latest
- LockWindowUpdate 讲解
- Hadoop 从零开始学习系列-hive与hbase外部关联表建立及数据导入
- 线段树模板
- git@oschina 上的web项目基础框架
- C#如何操控FTP
- 欧几里得算法 模板
- Activity,Fragment,Service生命周期
- 值得推荐的C/C++框架和库
- Java反射机制 以及 method.invoke运用
- css3.0中transition属性设置过度的动态效果
- C++设计模式之解释器模式