Color the ball HDU - 1556 (线段树)
2024-10-08 00:51:56
思路:线段树,区间更新
#include<iostream>
#include<vector>
#include<string>
#include<cmath>
#include<set>
#include<algorithm>
#include<cstdio>
#include<map>
#include<cstring>
#include<list> #define MAXSIZE 100010 using namespace std; int tree[MAXSIZE*];
int lz[MAXSIZE*];
int N;
int cnt = ; // 控制输出的打印格式 void init()
{
memset(tree, , sizeof(tree));
memset(lz, , sizeof(lz));
} void build(int node, int l, int r)
{
if(l == r)
{
tree[node] = ;
return;
}
int mid = (l+r)/;
build(node*, l, mid);
build(node*+, mid+, r); tree[node] = tree[node*] + tree[node*+];
} void push_down(int node, int l, int r)
{
if(lz[node])
{
int mid = (l+r)/;
lz[node*] += lz[node];
lz[node*+] += lz[node];
tree[node*] += (mid-l+)*lz[node];
tree[node*+] += (r-mid)*lz[node];
lz[node] = ;
}
} void update_range(int node, int l, int r, int L, int R, int add)
{
if(l <= L && r >= R)
{
lz[node] += add;
tree[node] += (R-L+)*add;
return;
} push_down(node, L, R);
int mid = (L+R)/;
if(mid >= l)
update_range(node*, l, r, L, mid, add);
if(mid < r)
update_range(node*+, l, r, mid+, R, add); tree[node] = tree[node*] + tree[node*+];
} void print(int node, int l, int r)
{
if(l == r)
{
cnt++;
printf("%d", tree[node]);
if(cnt != N)
printf(" ");
else
printf("\n");
return;
}
push_down(node, l, r); // 此处一定要记得push_down !
int mid = (l+r)/;
print(node*, l, mid);
print(node*+, mid+, r); } int main()
{ while(scanf("%d", &N) != EOF)
{
if(N == )
break;
init();
build(, , N);
for(int i = ; i < N; ++i)
{
int a, b;
scanf("%d%d", &a, &b);
update_range(, a, b, , N, );
}
cnt = ;
print(, , N);
} return ;
}
最新文章
- 1.1Axure简介
- 对Hibernate的理解
- 调试多线程 &; 查死锁的bug &; gcore命令 &; gdb对多线程的调试 &; gcore &; pstack &; 调试常用命令
- HTML的FormData对象
- shell学习之路:重定向符号的使用
- ExtJs文件上传(Ext.ux.form.FileUploadField)
- Android中使用Handler造成内存泄露
- 第九天 内容提供者 ContentResolver
- android 学习随笔二十六(动画:属性动画)
- Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
- asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法
- webviewactivity
- 【剑指offer】Q32:从1至n整1出现的次数(python)
- HBase应用快速学习
- Redis的事务功能详解
- Linux系统安装python3
- CSS特性
- div 内table 居中实现代码
- kvm/qemu虚拟机桥接网络创建与配置