社区讨论

关于S组 T2 未知时间复杂度 MLE 90分求助

学术版参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lobes2i7
此快照首次捕获于
2023/10/29 19:49
2 年前
此快照最后确认于
2023/11/02 10:48
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,cnt=0,tot=0;
long long ans=0;
char a[2000000+10];
string s;
unordered_map<string,int> p;
int main()
{
    scanf("%d %s",&n,a+1);
    s=a[1];
    p[s]++;
    for(int i=2;i<=n;++i)
    {
        int l=s.size();
        if(a[i]==s.back()) s.pop_back();
        else s.push_back(a[i]);
        if(s.size()==0)
        {
            ans=ans+tot+1;
            tot++;
        }
        else
        {
            ans=ans+p[s];
            p[s]++;
        }
    }   
    printf("%lld",ans);
    return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...