洛谷传送门
解析
其实就是每组2个长度为2的字符串统计交叉相等的个数
每个序列可以用一个26进制的数来表示,总要加个标签,勉强算hash。。(想叫《水题》 )
最大值为26*26(ZZ)
所以可以开一个二维数组来进行统计
那么就简单了
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<queue>
#include<stack>
#include<deque>
#include<set>
#include<string>
using namespace std;
long long x[1050][1050];
int n;
void solve(){for(int i=0;i<=1000;i++){for(int j=0;j<=1000;j++) x[i][j]=0;}
}
int main(){solve();char s[25],s1[3],s2[3];scanf("%d",&n);long long ans=0;int a,b;for(int i=1;i<=n;i++){scanf("%s%s",s,s1);a=26*(s[0]-'A')+(s[1]-'A');b=26*(s1[0]-'A')+(s1[1]-'A');if(a!=b){ans+=x[b][a];}x[a][b]++;}printf("%lld\n",ans);return 0;
}