UOJ Logo

NOI.AC

1S 512MB

#2077. patrick

统计

patrick

【问题描述】

$William$的家门前有一条河 ,$William$每天要观察这条河,并且统计河中岛屿的个数。

河床的地形可以抽象为一个长度为 $n$ 的数列 ${ai}$,第$ i$ 位的数字代表河床对应位置的高度。

当水位为 $h$ 时,所有高度低于$ h$ 的位置都会被水覆盖,高度大于等于$ h$ 的地形就露出水面,连成了岛屿。

比如当 ${ai} = {5,3,2,6,1}$,且$ h = 3 $时,河中共有 $2$ 个岛屿,分别为$ {5,3}$ 和 ${6}$。

请你协助$William$统计每一天的岛屿的个数。河床每个位置的高度可能会发生变化,而且水位也会发 生变化。

【输入】

第一行两个正整数 N,M,表示数列的长度,和询问的个数。

第二行 N 个正整数 Hi,表示一开始的数列,即一开始河床在每处的高度。

接下来 M 行,每行有如下两种可能的格式:

  1. Q 外加一个整数 C,表示询问若将水位抬高或降低到 C ⊕Last,湖中会有几个岛。

  2. C 外加两个整数 A,B,表示 A⊕Last 处的高度变为了 B⊕Last。其中 Last 表示上一次询问 (Q 操作) 的答案。Last 一开始等于 0,且 ⊕ 是按位异或的意思。

【输出】

共 M 行,每行一个整数,代表每次询问的答案。

【样例输入输出】

5 7

3 2 1 3 5

Q 1

Q 2

Q 3

C 2 2

C 5 3

C 4 2

Q 2

1

2

1

3

【数据范围】

4.png