[AtCoder] ABC 137 C – Green Bin
問題
方針
各文字列を構成する文字の種類と数が同じであれば、同じ文字列を構成できるので、文字列の文字を整列させマップなどでカウントすれば良いです。構成要素が同じ文字列の個数を \( v \) とすると、アナグラムの個数は、
\[ \dfrac{v (v – 1)}{2}\]
となります。これを足し上げていけば良いです。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int N; cin >> N; map<string, ll> m; string s; for (int i = 0; i < N; i++) { cin >> s; sort(s.begin(), s.end()); m[s]++; } ll v = 0; for (auto it = m.begin(); it != m.end(); it++) { ll t = it->second; v += t * (t - 1) / 2; } cout << v << "\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません