QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#631971#7876. Cyclic Substringsfrankly6WA 49ms115476kbC++171011b2024-10-12 11:14:442024-10-12 11:14:45

Judging History

你现在查看的是最新测评结果

  • [2024-10-12 11:14:45]
  • 评测
  • 测评结果:WA
  • 用时:49ms
  • 内存:115476kb
  • [2024-10-12 11:14:44]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int MX=3000300;
const int P=998244353;

int N, cur, siz=1;
string s;
struct node{int ch[10],f,num,len,c;}t[2*MX];
int gf(int id, int p)
{
    while(s[p-t[id].len-1]!=s[p]) id=t[id].f;
    return id;
}
int main()
{
    // freopen("testdata.in","r",stdin);
    cin >> N >> s; s=" "+s+s;
    t[0].f=1; t[1].len=-1;
    for(int i=1;i<=2*N;i++)
    {
        int p=gf(cur,i);
        if(!t[p].ch[s[i]-'0'])
        {
            t[++siz].f=t[gf(t[p].f,i)].ch[s[i]-'0'];
            int &v=t[p].ch[s[i]-'0']=siz;
            t[v].len=t[p].len+2;
            t[v].num=t[t[v].f].num+1;
        }
        cur=t[p].ch[s[i]-'0'];
        if(i>N) t[cur].c++;
    }
    ll ans=0;
    for(int i=siz;i>=0;i--) 
    {
        t[t[i].f].c+=t[i].c;
        if(t[i].len<=N) ans=(ans+ll(t[i].c*t[i].c*t[i].len))%P;
    }
    cout << ans << '\n';
    return (0-0);
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3600kb

input:

5
01010

output:

39

result:

ok 1 number(s): "39"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3828kb

input:

8
66776677

output:

192

result:

ok 1 number(s): "192"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

1
1

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3824kb

input:

2
22

output:

12

result:

ok 1 number(s): "12"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3596kb

input:

2
21

output:

2

result:

ok 1 number(s): "2"

Test #6:

score: 0
Accepted
time: 0ms
memory: 3536kb

input:

3
233

output:

10

result:

ok 1 number(s): "10"

Test #7:

score: 0
Accepted
time: 0ms
memory: 3796kb

input:

3
666

output:

54

result:

ok 1 number(s): "54"

Test #8:

score: -100
Wrong Answer
time: 49ms
memory: 115476kb

input:

1000000
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333...

output:

-239992835

result:

wrong answer 1st numbers differ - expected: '496166704', found: '-239992835'