开关switch
时间限制: 1000 ms 内存限制: 131072 KB
【题目描述】
现有 N(2 ≤ N ≤ 100000)盏灯排成一排,从左到右依次编号为:1,2,…,N。然后依次执行 M(1 ≤ M ≤ 100000)项操作,操作分为两种:第一种操作指定一个区间 [a,b],然后改变编号在这个区间内的灯的状态(把开着的灯关上,关着的灯打开);第二种操作是指定一个区间 [a,b],要求你输出这个区间内有多少盏灯是打开的。灯在初始时都是关着的。
【输入】
第一行有两个整数 N 和 M,分别表示灯的数目和操作的数目。接下来有 M 行,每行有三个整数,依次为:c, a, b。其中 c 表示操作的种类,当 c 的值为 0 时,表示是第一种操作;当 c 的值为 1 时表示是第二种操作。a 和 b 则分别表示了操作区间的左右边界(1 ≤ a ≤ b ≤ N)。
【输出】
每当遇到第二种操作时,输出一行,包含一个整数:此时在查询的区间中打开的灯的数目。
【输入样例】
4 5
0 1 2
0 2 4
1 2 3
0 2 4
1 1 4【输出样例】
1
2题面来源:https://www.cnblogs.com/lyc-lb-blogs/p/14969883.html (信息学奥赛一本通(C++版)第 4 部分 数据结构(提高篇)第 3 章 线段树 1993:开关switch,完整转录原站题面,含时间限制 1000 ms、内存限制 131072 KB 与数据范围 2≤N≤100000、1≤M≤100000;多引擎检索仅此一份完整题面,未能获取第二来源逐字核对)