rt,RE*4,崩溃了
数据范围是3e5,我开的5e6还不够
#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
int n,ans,idx;
string s;
struct trie
{
int sum,son[26];
}tr[N];
void update(int u,int p,string s)
{
tr[u].sum++;
if(p==s.size())return;
int d=s[p]-'a';
if(!tr[u].son[d])tr[u].son[d]=++idx;
update(tr[u].son[d],p+1,s);
}
void dfs(int u,int f)
{
if(u)ans+=tr[u].sum*(tr[u].sum-1)/2;
else if(f)return;
for(int i=0;i<26;i++)dfs(tr[u].son[i],1);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s;
update(0,0,s);
}
dfs(0,0);
cout<<ans;
}
为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制为什么ABC是ACM赛制v