刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

替换

有一个包含 N 个正整数 A1、A2、……、AN 的数列 A。接下来将进行 Q 次操作:

在第 i 次操作中,将数列中所有值为 Bi 的元素替换为 Ci。请针对每次操作(1≤i≤Q),输出操作后数列 A 的所有元素之和 Si

时间限制:1000ms,内存限制:256MB

输入格式

第一行,一个整数 N;

第二行,N 个整数 A1、A2、……、AN

第三行,一个整数 Q。

接下来 Q行,每行两个整数 Bi、Ci

输出格式

输出 Q行,每行一个整数 Si,表示每次操作后的数列总和。注意:Si 可能超出32 位整数范围。


输入样例#1

4
1 2 3 4
3
1 2
2 4
3 4

输出样例#1

11
15
16

输入样例#2

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

输出样例#2

16
18
21
25
5

数据范围:

1≤N、Q、Ai、Bi、Ci≤105,Bi≠Ci

使用微信搜索喵呜刷题,轻松应对考试!

答案:

对于每次操作,我们需要遍历整个数列,找到所有等于B的元素并替换为C的值。然后计算数列的总和。由于数据范围较大,我们可以使用哈希表来快速定位到等于B的元素并进行替换,以提高效率。具体步骤如下:

  1. 创建一个哈希表,用于存储数列中每个元素的出现次数。初始化时,将每个元素的出现次数设为初始值。
  2. 对于每次操作,遍历数列中的每个元素,如果元素等于B的值,则在哈希表中将对应元素的出现次数减一。同时,如果元素等于C的值,则在哈希表中将对应元素的出现次数加一。这样哈希表中存储的就是当前数列中每个元素的出现次数。
  3. 计算数列的总和,即遍历哈希表,将所有元素的值乘以对应的出现次数并累加。得到的结果即为当前操作后的数列总和。输出该值。

解析:

本题是一道关于数列操作的题目,要求根据给定的操作序列对初始数列进行替换并计算每次操作后的数列总和。由于数据范围较大,直接使用暴力替换和计算效率较低,因此需要使用哈希表来提高操作效率。通过创建哈希表来存储每个元素的出现次数,可以快速地定位到需要替换的元素并进行替换操作。然后遍历哈希表计算数列的总和并输出即可。

创作类型:
原创

本文链接:替换 有一个包含 N 个正整数 A1、A2、……、AN 的数列 A。接下来将进行 Q 次操作: 在第

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share