为啥错了???求助!!!
查看原帖
为啥错了???求助!!!
1339620
cx2013楼主2024/8/26 11:33
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+10;
int son[N][26],fa[N],cnt[N];
string str;
stack<char> zm;
long long ans,n,u,idx=1;
int main (){
    cin>>n>>str;
    int i=0;
    cnt[u]=1;
    while(str[i]){
        if(zm.size() && zm.top()==str[i]){
            zm.pop();
            u=fa[u];
        }else{
            zm.push(str[i]);
            int &v=son[u][str[i]-'a'];
            if(v==0){
                v=++idx;
                fa[v]=u;
                u=v;
            }
        }
        ans+=cnt[u]++;
        ++i;
    }
    cout<<ans;
   return 0;
    
}
2024/8/26 11:33
加载中...