Logo Wy Online Judge

WyOJ

时间限制:2 s 空间限制:128 MB 控制组: group_default 压缩包大小: 113.493 MB

#540. 数颜色 T4

统计

时间限制 $2$ 秒,空间限制 $128\text{MB}$。

题目描述

小 C 的兔子不是雪白的,而是五彩缤纷的。每只兔子都有一种颜色,不同的兔子可能有相同的颜色。小 C 把她标号从 1 到 $n$ 的 $n$ 只兔子排成长长的一排,来给他们喂胡萝卜吃。排列完成后,第 $i$ 只兔子的颜色是 $a_i$。

俗话说得好,“萝卜青菜,各有所爱”。小 C 发现,不同颜色的兔子可能有对胡萝卜的不同偏好。比如,银色的兔子最喜欢吃金色的胡萝卜,金色的兔子更喜欢吃胡萝卜叶子,而绿色的兔子却喜欢吃酸一点的胡萝卜……为了满足兔子们的要求,小 C 十分苦恼。所以,为了使得胡萝卜喂得更加准确,小 C 想知道在区间 $[l_j,r_j]$ 里有多少只颜色为 $c_j$ 的兔子。

不过,因为小 C 的兔子们都十分地活跃,它们不是很愿意待在一个固定的位置;与此同时,小 C 也在根据她知道的信息来给兔子们调整位置。所以,有时编号为 $x_j$ 和 $x_j+1$ 的两只兔子会交换位置。小 C 被这一系列麻烦事给难住了。你能帮帮她吗?

输入格式

输入第 $1$ 行两个正整数 $n,m$,分别表示兔子数量和操作次数。

输入第 $2$ 行 $n$ 个正整数,第 $i$ 个数表示第 $i$ 只兔子的颜色 $a_i$。

输入接下来 $m$ 行,每行为以下两种中的一种:

  • “$1\ l_j\ r_j\ c_j$” :询问在区间 $[l_j,r_j]$ 里有多少只颜色为 $c_j$ 的兔子;

  • “$2\ x_j$”: $x_j$ 和 $x_j+1$ 两只兔子交换了位置。

输出格式

对于每个 $1$ 操作,输出一行一个正整数,表示你对于这个询问的答案。

输入输出样例 #0

输入 #0

6 5 
1 2 3 2 3 3  
1 1 3 2 
1 4 6 3  
2 3 
1 1 3 2  
1 4 6 3

输出 #0

1 
2 
2 
3

说明/提示

【样例 $0$ 说明】

前两个 $1$ 操作和后两个 $1$ 操作对应相同;在第三次的 $2$ 操作后,$3$ 号兔子和 $4$ 号兔子交换了位置,序列变为 $1,2,2,3,3,3$。

【其余样例】

见下发文件,样例 $1,2,3,4,5,6,7$ 分别满足测试点 $1,3,4,5,7,9,17$ 的约束条件。

【数据范围与约定】

对于所有数据,$1\le n,m\le 10^6,1\le a_i,c_j\le 10^9,1\le x_j\lt n,1\le l_j\le r_j\le n$。

以下记 $2$ 操作数量为 $m_2$,$a_i,c_j$ 的最大值为 $V$,同种颜色最多有 $C$ 个。

留空代表无特殊限制,即 $n,m\le 10^6,m_2\le m,V\le 10^9,C\le n$。 \begin{array}{|c|c|c|c|c|} \hline \textbf{测试点编号} & n,m\le & m_2\le & V\le & C\le \\ \hline 1,2 & 1000 & & & \\ \hline 3 & 2\times 10^5 & & n & 1 \\ \hline 4 & 2\times 10^5 & & & 100 \\ \hline 5,6 & 2\times 10^5 & & n & \\ \hline 7,8 & 2\times 10^5 & 0 & & \\ \hline 9,10,11,12 & 2\times 10^5 & & & \\ \hline 13 & & & n & 1 \\ \hline 14 & & & & 100 \\ \hline 15 & & & n & \\ \hline 16 & & 0 & & \\ \hline 17,18,19,20 & & & & \\ \hline \end{array}