公式
A - 宝くじ番号の照合 / Lottery Number Matching 解説
by
A - 宝くじ番号の照合 / Lottery Number Matching 解説
by
MtSaka
印刷ページ
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
\(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;
}
投稿日時:
最終更新:
