1.set
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std; //ÿ¸öµ¥´ÊÖ»³öÏÖÒ»´Î,¼´Ò»¸öµ¥´ÊÖÁ¶àÓëÆäËüµ¥´ÊÅäºÏÒ»±é
set<string> f; int main()
{
string s,t;
long n;
long sum=;
scanf("%ld",&n);
while (n--)
{
cin>>s;
if (f.find(s)!=f.end())
sum++; t=s;
reverse(t.begin(),t.end());
f.insert(t);
}
printf("%lld\n",sum);
return ;
}
2.map
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std; map<string,long> f; int main()
{
string s,t;
long n;
long long sum=;
scanf("%ld",&n);
while (n--)
{
cin>>s;
t=s;
reverse(t.begin(),t.end());
sum=sum+(long long)f[t]*f[t];
f[s]++;
}
printf("%lld\n",sum);
return ;
}