公式

A - 宝くじ番号の照合 / Lottery Number Matching 解説 by MtSaka 印刷ページ


初心者の方へ


\(A\) と \(B\) に共通する要素の数が答えです。

\(B\) の各要素を見て、それぞれ \(A\) の集合の元であるかを判定していくことでこの値は求まります。

ある数が \(A\) の元であるかは、C++の std::set などを用いることで \(\mathrm{O}(\log N)\) で計算できます。

よって、全体で\(\mathrm{O}(N\log N)\) で解くことができます。

実装例(C++)

#include <bits/stdc++.h>
using namespace std;
int main() {
    int k, m;
    cin >> k >> m;
    set<int> st;
    for (int i = 0; i < k;++i){
        int a;
        cin >> a;
        st.insert(a);
    }
    int ans = 0;
    for (int i = 0; i < m;++i){
        int b;
        cin >> b;
        if (st.count(b)) ans++;
    }
    cout << ans << endl;
}

投稿日時:
最終更新: