【CODEVS1191】数轴染色
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
#include<iostream> #include<cstdio> using namespace std; int sum,tot=0; struct treetype {int Left,Right; //区间[Left,Right) int lptr,rptr; //左右孩子指针 int sum; //区间和 int bj; //标记 }t[2000000]; void buildtree(int ll,int rr) {int cur=++tot;t[cur].Left=ll; t[cur].Right=rr;if(ll!=rr-1){t[cur].lptr=tot+1;buildtree(ll,(ll+rr)/2);t[cur].rptr=tot+1;buildtree(+(ll+rr)/2,rr);t[cur].sum=t[t[cur].lptr].sum+t[t[cur].rptr].sum;}else t[cur].sum=1; } void update(int k) //延迟信息下传 {t[t[k].lptr].sum=0; t[t[k].rptr].sum=0; //左右子区间清空 t[t[k].lptr].bj=1; t[t[k].rptr].bj=1; //传递标志 t[k].bj=0; //清除标志 }void change(int k,int ll,int rr) //修改区间[ll,rr)元素的值 {if (ll<=t[k].Left&&rr>=t[k].Right) //覆盖当前区间 {t[k].sum=0; //区间和=0 t[k].bj=1; //设标志 }else{if(t[k].bj) update(k); //传递修改 if (ll<(t[k].Left+t[k].Right)/2) //修改左区间 change(t[k].lptr,ll,rr);if (rr>(t[k].Left+t[k].Right)/2) //修改右区间 change(t[k].rptr,ll,rr);t[k].sum=t[t[k].lptr].sum+t[t[k].rptr].sum; //更新区间和 } }int query(int k,int ll,int rr) //查询[ll,rr)区间和 {if (ll<=t[k].Left&&rr>=t[k].Right) return t[k].sum;if (t[k].bj) update(k); //传递修改 int ans=0;if (ll<(t[k].Left+t[k].Right)/2) ans+=query(t[k].lptr,ll,rr);if (rr>(t[k].Left+t[k].Right)/2) ans+=query(t[k].rptr,ll,rr);return ans; }int main() {int n,tim,x,y;scanf("%d%d",&n,&tim);sum=n;buildtree(1,n+1);for (int i=1;i<=tim;i++){scanf("%d%d",&x,&y);change(1,x,y+1);printf("%d\n",query(1,1,n+1));}return 0; }
转载于:https://www.cnblogs.com/liumengyue/p/5107358.html
【CODEVS1191】数轴染色相关推荐
- Codevs 1191 数轴染色
1191 数轴染色 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色. ...
- NOIP知识汇总及模板整理
排序 求逆序对 NOIP2013火柴排队 洛谷 P2309 loidc 卖卖萌 二分 牢记二分姿势 前缀和及差分优化 NOIP2012借教室差分优化 贪心 洛谷 P3093 牛奶调度 HDU 5500 ...
- codevs 1191 树轴染色 线段树区间定值,求和
codevs 1191 树轴染色 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.codevs.cn/problem/1191/ Des ...
- codeforces 1635E-Cars (二分图染色+拓扑排序)
传送门 difficult:2200difficult:2200difficult:2200 题意 数轴上存在 nnn 辆车和 mmm 个限制,每个限制以 opopop.uuu.vvv 的形式表示,其 ...
- [C] 深度优先搜索解决连通块/染色问题——求岛的个数
本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...
- [BZOJ4033][HAOI2015]树上染色
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2108 Solved: 901 [Submit][Sta ...
- 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...
本文原创于 2014-02-12 09:26. 今复习之用,有新体会,故重新编辑. 2014-02-12 09:26: 2-sat之第二斩!昨天看了半天论文(赵爽的和俉昱的),终于看明白了!好激动有 ...
- 【Codeforces】1080C Masha and two friends (棋盘染色)
http://codeforces.com/problemset/problem/1080/C 给定一个棋盘,(1,1)的位置是白色,观察可以知道,如果横纵坐标之和是偶数,那么是白色,奇数的话就是黑色 ...
- Luogu P3177 [HAOI2015] 树上染色(树上背包)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P3177 [HAOI2015] 树上染色 有一棵点数为 NNN 的树,树边有边权.给你一 ...
- UVA1364 Knights of the Round Table(双连通分量、二分图染色,超详细解释)
整理的算法模板合集: ACM模板 UVA1364 Knights of the Round Table 题目中要求互相有憎恨关系的人不能坐在相邻的位置,一个圆桌可以很形象地看作是一个环,也就是说我们两 ...
最新文章
- SUSE glibc升级为2.18过程记录
- 逻辑短路 java_逻辑操作符中的短路现象
- JavaFX自定义控件– Nest Thermostat第2部分
- 泽众性能测试软件,软件测试工具-测试管理工具-自动化测试工具-性能测试工具-SPASVO泽众软件测试网...
- 软件再快不如自带:找不到电脑文件?教你这 3 个Mac搜索技巧
- iTextSharp 添加文字内容
- Unity3d之AR小游戏
- Chapter 19 Time-varying Treatments
- PCB设计指南:安规、布局布线、EMC、热设计、工艺
- php中mysqli_fetch_assoc( )与mysqli_fetch_row( )的区别
- ZZULIOJ-1067,有问题的里程表(Python)
- Suzy找到实习了吗Day 3 | 链表开始啦 203移除链表元素 707设计链表 206 反转链表
- python运行窗口闪退_python+selenium自动化测试,IE浏览器运行过程中出现闪退
- 整顿一年再次增资近50%,为什么蚂蚁集团要重启IPO?
- 潜伏在我们身边的机器人
- 华为代理服务器相关配置
- 【数据恢复】使用FinalData进行数据恢复。
- 软考高级 真题 2010年上半年 信息系统项目管理师 论文
- (1) Dot net“很难”实现像Java一样的跨平台性
- 【嵌入式】STM32利用arm-dsp库进行FIR滤波