25pts求举反例
查看原帖
25pts求举反例
1152154
Chinami_Nagisa楼主2024/10/20 10:57

对了前五个,数据量一大就过不了

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
string s;
int dp[2000010];
int to[2000010];
int main()
{
    int n,ans = 0;
    cin>>n;
    cin>>s;
    s=' '+s;
    memset(to,-1,sizeof(to));
    for(int i=1;i<=n;i++)
    {
        if(s[i]==s[i-1]) to[i]=i-2;
        else
            if(to[i-1]!=-1 && s[i]==s[to[i-1]]) to[i]=to[i-1]-1;
    }
    for(int i=1;i<=n;i++)
    {
        if(to[i]!=-1) dp[i]=dp[to[i]]+1;
        ans += dp[i];
    }
    cout << ans;
}
2024/10/20 10:57
加载中...