思路

  • 使用暴力枚举,对于每一件礼物都遍历其颜色,检查它是否还符合条件。
  • 在上一步的基础进一步优化使用hash表来加速遍历颜色的过程。

代码实现

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
    int t;
    cin >> t;
    int n, m;
    int a;
    for (int i = 0; i < t; i++)
    {
        bool arr[201][201] = {false};
        bool valid[201];
        fill(valid, valid + 201, true);
        cin >> n >> m;
        int ans = n;
        for (int j = 1; j <= n; j++)
        {
            for (int k = 1; k <= m; k++)
            {
                cin >> a;
                arr[j][a] = true;
            }
        }
        for (int j = 0; j < m; j++)
        {
            cin >> a;
            for (int k = 1; k <= n; k++)
            {
                if (valid[k] && !arr[k][a])
                {
                    ans--;
                    valid[k] = false;
                }
            }
            cout << ans << " ";
        }
        cout << "\n";
    }
    return 0;
}