B3945 题解

· · 题解

Source & Knowledge

2024 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。

题目大意

有一个数组 a,需要进行 q 次操作。每次操作给定 xy 两个数,你需要将数组 a 中的第 x 个数修改为 y

求完成所有操作后数组中大于等于 V 的数的个数。

题目分析

我们在读入数组 a 时,定义一个 ans 变量记录原数组中大于等于 V 的数的个数。

在修改时,我们只需要判断修改前的 a[x]y,与 V 的大小关系即可:

完成 q 次修改操作后直接输出 ans 即可。

注意到,输入的所有数字都为整数,且都不超过 C++ 中 64 位有符号整数可表示的范围,因此需要使用 long long

cin >> n >> q >> v;
for (int i = 1; i <= n; ++i)
    cin >> a[i], ans += a[i] >= v;
while (q--) {
    cin >> x >> y;
    ans += a[x] < v && y >= v;
    ans -= a[x] >= v && y < v;
    a[x] = y;
}

视频讲解

完整代码见视频题解