题解 AT4862 【[ABC137C] Green Bin】
ChungZH's blog · ChungZH's portfolio
题目
我们将调用通过以某种顺序排列字符串
例如,greenbin 是 beginer 的 anagram。 如此处所示,当同一字符多次出现时,该字符必须使用该次数。
给定
题解
每输入一个字符串就先排好序,然后用 STL 中的 map 记录每种字符串出现的次数,最后用 (a.second * (a.second - 1) / 2) 求出
#include <algorithm>
#include <iostream>
#include <map>
#define ll long long
using namespace std;
int main() {
int n;
cin >> n;
map<string, ll> m;
for (int i = 0; i < n; i++) {
string s;
cin >> s;
sort(s.begin(), s.end());
m[s]++;
}
ll ans = 0;
for (auto a : m)
ans += (ll)(a.second * (a.second - 1) / 2);
cout << ans << endl;
return 0;
}