[C++] 纯文本查看 复制代码 #include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;
void solve(){
int n,idx=0;
cin>>n;
n*=2;
vector<int>cnt(200010);
vector<string>s(n+10);
for(int i=1;i<=n;i++)cin>>s[i];
vector tr(200010,vector<int>(26));
auto insert=[&](string str){
int p=0,t;
for(int i=0;i<str.size();i++){
t=str[i]-'a';
if(!tr[p][t])tr[p][t]=++idx;
p=tr[p][t];
cnt[p]++;
}
};
auto query=[&](string str){
int p=0,t,res=0;
for(int i=0;i<str.size();i++){
t=str[i]-'a';
if(!tr[p][t])return res;
p=tr[p][t];
res+=cnt[p];
}
return res;
};
sort(s.begin()+1,s.begin()+1+n);
for(int i=1;i<=n;i+=2){
insert(s[i]);
}
int ans=0;
for(int i=2;i<=n;i+=2){
ans+=query(s[i]);
}
cout<<ans<<endl;
}
signed main(){
int t=1;ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
// cin>>t;
while(t--)solve();
return 0;
}
|