#46. 数组学习检验

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:无测试数据
上传者: WendyAsif

题目描述

到了期末的时候了,也就是到了检验学期学习成果的时候了。作为学习编程的第一学期,肯定学习了数组。

于是,第一题是与数组有关的内容。

老师首先给了同学们一个数组,然后会询问一些关于数组的问题:值为 xxx 的数在数组中出现了几次。为了避免同学们互相借鉴答案,于是,老师也做一些修改或者删除操作。

形式化的说,首先给定一个长度为 n 的数组 a 。然后进行 m 次询问:

询问共有 4 种类型,每一个询问首先会说明所属类型。

  • 类型1 ,会额外给出一个数 x ,表示询问 x 的出现次数。

  • 类型2 ,会额外给出一个数 x ,表示删除数组中的所有 x 。

  • 类型3,会额外给出两个数,x,y ,表示把数组中出现的所有 x 改为 y 。如果 x 没有出现,忽略该次操作即可。

  • 类型4,会额外给出两个数,x,y,表示把数组中值 在 [x,y] 中间的数全部删除。

输入格式

输入数据共包含 n+1 行。

第一行两个整数,n,m 分别表示初始状态数组长度 和 询问次数 m 。

接下来 n 行,每行表示一个询问,第一个数 oper 表示询问的类型。

如果 oper 为 1 ,则该行 还有一个数 x ,表示询问 x 的出现次数。

如果 oper 为 2 ,则该行 还有一个数 x ,表示表示删除数组中的所有 x 。

如果 oper 为 3 ,则该行还有 两个数 x,y ,表示表示把数组中出现的所有 x 改为 y 。

如果 oper 为 4 ,则该行还有 两个数 x,y ,表示把数组中值 在 [x,y] 中间的数全部删除。

输出格式

输出若干行。

对于每个类型为 1 询问,输出一行一个整数表示答案。

数据范围与提示

测试点编号 特殊性质
1-4 询问只有类型1,并且
5-8 所有操作都有,但保证
9-12 所有操作都有,但任意时刻,数组中的数的最大值在 内。
13-20 无任何特殊性质。