A:hash 或者 map 或者trie。
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=200010; map<vector<char>,int>mp; char c[maxn][22]; vector<char>S; int main() { int N,M,ans=0; scanf("%d",&N); rep(i,1,N){ scanf("%s",c[i]); if(c[i][0]=='T'||c[i][0]=='G'){ int len=strlen(c[i]); S.clear(); rep(j,0,len-1) S.push_back(c[i][j]); mp[S]++; } } rep(i,1,N) { if(c[i][0]=='A'||c[i][0]=='C') { int len=strlen(c[i]); S.clear(); rep(j,0,len-1){ if(c[i][j]=='A') S.push_back('T'); if(c[i][j]=='T') S.push_back('A'); if(c[i][j]=='C') S.push_back('G'); if(c[i][j]=='G') S.push_back('C'); } if(mp[S]>=1) ans++,mp[S]--; } } printf("%d\n",ans); return 0; }