ABC137C Gree Bin

URL :atcoder

题面描述: 给出n个字符串,求其中两个字符串互相是10个字符所构成的排列有几对

思路: 使用map来映射每种字符串即可

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<bits/stdc++.h>
using namespace std;
long long n;
stringstream ss;
string its(long long x){
string aans;
ss<<x;
ss>>aans;
ss.clear();
ss.str("");
return aans;
}
int cnt[300];
string tmp,s;
unsigned long long ans=0;
unordered_map<string,unsigned long long> us;
unordered_map<string,unsigned long long>::iterator it;
char c;
int main(){
scanf("%lld",&n);
for(int i=0;i<n;i++){
fill(cnt,cnt+256,0);
tmp="";
cin>>s;
for(int j=0;j<s.size();j++) {
cnt[(int)(s[j]-'a')]++;
}
for(int j=0;j<30;j++) tmp=tmp+its(cnt[j]);
us[tmp]++;
}
for(it=us.begin();it!=us.end();it++){
if(it->second>=2) {
unsigned long long tmp;
tmp=it->second*(it->second-1)/2;
ans+=tmp;
}
}
cout<<ans;
return 0;
}