题解:P16437 [XJTUPC 2026] 全都登不上 2

· · 题解

题目传送门 & 更好的阅读体验

题目大意

:::info[说明] 由于 OJ 服务器所在小组不会被隔离且每个小组至多被隔离一次,所以隔离一个小组时,组内的所有机房都无法访问 OJ,此时不能被计入答案,其余所有机房均会被计入答案,即所有 a_i 不等于任何一个 u 的机房 i 都会被计入答案。 :::

给定序列 a_1,a_2,\cdots,a_n 并给定 k 个整数 u_1,u_2,\cdots,u_k,求满足 i\in[1,n]\forall\,j\in[1,k]\cap\mathbb Z,有 a_i \ne u_j 的正整数 i 的个数。

解题思路

很显然这是一道语法基础题,定义一个数组 cnt,令 cnt_i 表示满足 j\in [1,n]a_j=i 的正整数 j 的个数,初始化答案变量 ansn,每次输入一个 u,则将 ans 减去 cnt_u,最终输出 ans 即可。

:::success[AC 代码(赛时)]{open}

#include <bits/stdc++.h>
using namespace std;

int n, m, k, u, v, ans, a[100010], cnt[100010];
// cnt 的含义见【解题思路】

int main()
{
    cin.tie(0) -> sync_with_stdio(false);
    cin >> n >> m >> k; // 输入(m 无效)
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i]; // 输入序列 a
        cnt[a[i]]++; // 计算 cnt
    }
    cin >> v; // 这是一个无效条件
    ans = n; // 初始化 ans
    while (k--)
    {
        cin >> u; // 输入 u
        ans -= cnt[u]; // 将 ans 减去 cnt[u]
    }
    cout << ans << '\n'; // 输出 ans
    return 0; // 请勿抄袭
}

:::

:::info[AI 使用说明]{open} 本题解中的【题目大意】中的部分 \LaTeX 公式的写法询问了 AI 工具,其余所有内容均为本人独立完成。 :::

蒟蒻第 8 篇题解,求过求赞 qwq