QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#631971 | #7876. Cyclic Substrings | frankly6 | WA | 49ms | 115476kb | C++17 | 1011b | 2024-10-12 11:14:44 | 2024-10-12 11:14:45 |
Judging History
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);
}
Details
Tip: Click on the bar to expand more detailed information
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'