codevs 1191 树轴染色

Time Limit: 1 Sec  Memory Limit: 256 MB

题目连接

http://www.codevs.cn/problem/1191/

Description

在一条数轴上有N个点,分别是1~N。一开始所有的点都被染成黑色。接着
我们进行M次操作,第i次操作将[Li,Ri]这些点染成白色。请输出每个操作执行后
剩余黑色点的个数。

Input

输入一行为N和M。下面M行每行两个数Li、Ri

Output


输出M行,为每次操作后剩余黑色点的个数。

Sample Input

10 3
3 3
5 7
2 8

Sample Output

9
6
3

HINT

数据限制
对30%的数据有1<=N<=2000,1<=M<=2000
对100%数据有1<=Li<=Ri<=N<=200000,1<=M<=200000

题意

题解:

区间更新,把黑色当成1,白色当成0,然后搞一搞就好了

代码:

#include <stdio.h>
#include <string.h>const int MAXN = 400000;
int sum[MAXN<<2];
int lazy[MAXN<<2];void pushup(int rt)
{sum[rt] = sum[rt<<1] + sum[rt<<1|1];
}void pushdown(int rt, int x)
{if(lazy[rt] != -1) {lazy[rt<<1] = lazy[rt<<1|1] = lazy[rt];sum[rt<<1] = (x-(x>>1))*lazy[rt];///!!!sum[rt<<1|1] = (x>>1)*lazy[rt];///!!!lazy[rt] = -1;}
}void creat(int l, int r, int rt)
{lazy[rt] = -1, sum[rt] = 0;if(l == r) return;int mid = (l+r)>>1;creat(l, mid, rt<<1);creat(mid+1, r, rt<<1|1);pushup(rt);
}void modify(int l, int r, int x, int L, int R, int rt)
{if(l <= L && r >= R) {lazy[rt] = x;sum[rt] = x*(R-L+1);///!!!return;}pushdown(rt, R-L+1);///!!!int mid = (L+R)>>1;if(l <= mid) modify(l, r, x, L, mid, rt<<1);if(r > mid) modify(l, r, x, mid+1, R, rt<<1|1);pushup(rt);
}int main()
{int i, j, k = 0;int n, T, q;int x, y, w;//while(scanf("%d", &T) != EOF)//while(T--)//{scanf("%d %d", &n, &q);creat(1, n, 1);while(q--) {scanf("%d %d", &x, &y);modify(x, y, 1, 1, n, 1);printf("%d\n",n-sum[1]);}//printf("Case %d: The total value of the hook is %d.\n", ++k, sum[1]);//}return 0;
}

转载于:https://www.cnblogs.com/qscqesze/p/4410137.html

codevs 1191 树轴染色 线段树区间定值,求和相关推荐

  1. 【BZOJ2243】[SDOI2011]染色 树链剖分+线段树

    [BZOJ2243][SDOI2011]染色 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的 ...

  2. P2486 [SDOI2011]染色(树链剖分+线段树)

    题干描述 输入描述 输出格式 对于每个询问操作,输出一行答案. 输入输出样例 输入 #1 复制 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q ...

  3. D-query SPOJ - DQUERY(求区间不同数的个数)(树状数组||线段树+离散)(主席树+在线)

    English Vietnamese Given a sequence of n numbers a1, a2, -, an and a number of d-queries. A d-query ...

  4. 线段树线段树的创建线段树的查询单节点更新区间更新

    目录 线段树 什么是线段树? 线段树的创建 线段树的查询 单节点更新 区间更新 未完待续 线段树 实现问题:常用于求数组区间最小值 时间复杂度:(1).建树复杂度:nlogn.(2).线段树算法复杂度 ...

  5. 势能线段树/吉司机线段树-我没有脑子

    势能线段树/吉司机线段树 BZOJ3211 花神游历各国 BZOJ5312 冒险 BZOJ4355 Play with sequence BZOJ4695 最假女选手 \(A_i = max(A_i, ...

  6. 【BZOJ-2325】道馆之战 树链剖分 + 线段树

    2325: [ZJOI2011]道馆之战 Time Limit: 40 Sec  Memory Limit: 256 MB Submit: 1153  Solved: 421 [Submit][Sta ...

  7. CodeForces - 160D Edges in MST(思维+tarjan/树链剖分+线段树)

    题目链接:点击查看 题目大意:给出一张 n 个点 m 条边组成的带权无向图,现在对于每条边来说,确定一下其分类: 一定是最小生成树上的边 可能是最小生成树上的边 一定不是最小生成树的边 题目分析:两种 ...

  8. 主席树——多棵线段树的集合

    主席树: (不要管名字) 我们有的时候,会遇到很多种情况,对于每一种情况,都需要通过线段树的操作实现. 碰巧的是,相邻两种情况下的线段树的差异不大.(总体的差异次数是O(N)级别的,均摊就是O(常数) ...

  9. BZOJ4127Abs——树链剖分+线段树

    题目描述 给定一棵树,设计数据结构支持以下操作 1 u v d 表示将路径 (u,v) 加d 2 u v 表示询问路径 (u,v) 上点权绝对值的和 输入 第一行两个整数n和m,表示结点个数和操作数 ...

最新文章

  1. java学习一 path与classpath
  2. php采集分析,PHP采集程序原理分析篇
  3. 2014年英语一作文partB漫画作文
  4. oracle 中的日志在处理,ORACLE在存储过程中记录日志的处理包
  5. 【ElasticSearch】ElasticSearch 7.x 默认不在支持指定索引类型 Failed to parse mapping [_doc]: Root mapping definitio
  6. Ajax Post请求实例
  7. 用JNDI连接数据库
  8. ios实现图片动画效果
  9. Glance - 直接操作image
  10. The Introduction Of Filter
  11. frontpage 2010.2003绿色版
  12. IEEE会议(期刊)检索
  13. 免费智能AI文章生成器-只需要输入关键词自动生成文章的软件
  14. 直流DC稳压降压电源模块芯片简单对比
  15. php模板修改教程,商业模板修改高级教程
  16. 物联网案例研究:确保格兰仕智能设备不易受黑客攻击
  17. 计算机应用论文经验总结,计算机应用基础总结论文
  18. 起诉中介的民事诉讼状
  19. 16WiFi上海开通:5487辆公交车覆盖免费WiFi
  20. 分享个老司机网站报错404页面模板源码

热门文章

  1. 建立标准SQL Server触发器
  2. 响应式微服务 in java 译 十二 service discovery
  3. 201621123053《Java程序设计》第十四周学习笔记文章
  4. 基于张量秩一分解的多目标跟踪方法
  5. 录音整理文字工具otranscribe简介
  6. libvirt-virsh命令
  7. CentOS 6.2 虚拟机 mail邮件信息: crash:[abrt] full crash report
  8. 远程计算机已结束连接解决方法
  9. pycharm error:no module named caffe
  10. Drchen的学习清单