D. 数颜色

    Type: RemoteJudge 1000ms 250MiB

数颜色

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目背景

大样例可在页面底部「附件」中下载。

题目描述

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

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

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

输入格式

从标准输入中读入数据。输入第 1 行两个正整数 nn,mm

输入第 2 行 nn 个正整数,第 ii 个数表示第 ii 只兔子的颜色 aia_i

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

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

  • 2 xj2\ x_j”: xjx_jxj+1x_j+1 两只兔子交换了位置。

输出格式

输出到标准输出中。

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

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
1 
2 
2 
3 

提示

【样例 1 说明】

前两个 1 操作和后两个 1 操作对应相同;在第三次的 2 操作后,3 号兔子和 4 号兔子

交换了位置,序列变为 1 2 2 3 3 3。

【数据范围与约定】

子任务会给出部分测试数据的特点。如果你在解决题目中遇到了困难,可以尝试只解 决一部分测试数据。 对于所有测试点,有 1lj<rjn,1xj<n1 \le l_j < r_j \le n,1 \le x_j < n。 每个测试点的数据规模及特点如下表:

特殊性质 1:保证对于所有操作 1,有 rjlj20|r_j - l_j| \le 20rjljn20|r_j - l_j| \le n - 20

特殊性质 2:保证不会有两只相同颜色的兔子。

1230

Not Attended
Status
Done
Rule
IOI
Problem
4
Start at
2025-12-30 13:30
End at
2025-12-30 15:06
Duration
1.6 hour(s)
Host
Partic.
29