社区讨论

25pts求举反例

P9753[CSP-S 2023] 消消乐参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m2h00gxs
此快照首次捕获于
2024/10/20 10:58
去年
此快照最后确认于
2024/10/20 10:58
去年
查看原帖
对了前五个,数据量一大就过不了
CPP
#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;
}

回复

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

正在加载回复...