思路:线段树,区间更新

 #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. 1.1Axure简介
  2. 对Hibernate的理解
  3. 调试多线程 &amp; 查死锁的bug &amp; gcore命令 &amp; gdb对多线程的调试 &amp; gcore &amp; pstack &amp; 调试常用命令
  4. HTML的FormData对象
  5. shell学习之路:重定向符号的使用
  6. ExtJs文件上传(Ext.ux.form.FileUploadField)
  7. Android中使用Handler造成内存泄露
  8. 第九天 内容提供者 ContentResolver
  9. android 学习随笔二十六(动画:属性动画)
  10. Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值
  11. 触发器修改后保存之前的数据 表中插入数据时ID自动增长
  12. asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法
  13. webviewactivity
  14. 【剑指offer】Q32:从1至n整1出现的次数(python)
  15. HBase应用快速学习
  16. Redis的事务功能详解
  17. Linux系统安装python3
  18. CSS特性
  19. div 内table 居中实现代码
  20. kvm/qemu虚拟机桥接网络创建与配置

热门文章

  1. springboot指定项目访问路径前缀
  2. vue爬坑之input组件
  3. 转:进程上下文VS中断上下文
  4. Spring-白话事物
  5. Struts2入门问题
  6. PageBarHelper分页显示类
  7. HashMap 和 concurrentHashMap
  8. DROOLS通过URL访问changset
  9. 阿里云 Aliplayer高级功能介绍(八):安全播放
  10. vue.js_12_vue的watch和computed