P1112 区间连续段

题目描述

给你一个长度为n的数组 \(a_1, a_2, \dots a_n\)
一开始这n个元素都为0。
然后有m次操作,每次操作有两种操作类型:

  • update x y a:将区间 \([x,y]\) 范围内的元素都置为 a
  • query x y:询问区间 \([x,y]\) 范围内有多少不同的数据段。

举个例子,如果一个区间内有如下的数 \(3,3,2,2,2,1\) ,那么它有3段数据段,分别是 \(3,3\)\(2,2,2\)\(1\)

输入格式

输入的第一行包含两个整数 \(n,m(1 \le n \le 10^5, 1 \le m \le 10^5)\)
接下来 \(m\) 行每行可能是两种形式:

  • update x y a:将区间 \([x,y]\) 范围内的元素都置为 a
  • query x y:询问区间 \([x,y]\) 范围内有多少不同的数据段。

其中 \(1 \le x \le y \le n, 1 \le a \le 10^9\)

输出格式

对于每次 query 询问,输出该区间的数据段的个数。

样例输入

3 3
update 1 2 1
query 1 2
query 2 3

样例输出

1
2
posted @ 2019-11-02 22:53  problems  阅读(221)  评论(0编辑  收藏  举报