連想配列の応用問題!
問題概要
個の数列がある。
番目の数列は、長さが
であり、その
番目の要素は
である。
2 つの数列 は、
であって、任意の
に対して
であるとき、等しいという。
個の数列の種類数を答えよ。
制約
の総和は
以下
考えたこと
問題文がいかめしくてビビるけど、実は単純なのだ。たとえば数列を C++ の vector<int> 型で表したとき、2 つの数列 P, Q が等しいかどうかは
P == Q
で判定できる!!
そして、数列の種類数は、set<vector<int>> 型変数 S を用意して、S に各数列を insert していけばよい。
最後に、S の要素数を返せば良い。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; set<vector<int>> S; for (int i = 0; i < N; ++i) { int L; cin >> L; vector<int> a(L); for (int j = 0; j < L; ++j) cin >> a[j]; S.insert(a); } cout << S.size() << endl; }