QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#274573#7876. Cyclic SubstringsCSUST_GXLAC ✓140ms687784kbC++201.4kb2023-12-03 17:48:072023-12-03 17:48:09

Judging History

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

  • [2023-12-03 17:48:09]
  • 评测
  • 测评结果:AC
  • 用时:140ms
  • 内存:687784kb
  • [2023-12-03 17:48:07]
  • 提交

answer

#include<bits/stdc++.h>

#define int long long
#define endl '\n'
using namespace std;
const  int maxn=6e6+5;
const int mod=998244353;
int ch[maxn];
int tree[maxn][10],cnt[maxn],len[maxn],fail[maxn],trans[maxn],cmt[maxn];
int p,last,n;
int new_node(int id){
    for(int i=0;i<10;i++) tree[p][i]=0;
    cnt[p]=0;
    len[p]=id;
    return p++;
}
int nn;
void init(){
    p=n=0;
    new_node(0);
    new_node(-1);
    last=0;
    fail[0]=1;
    ch[0]=-1;
}
int get_fail(int x){
    while(ch[n-len[x]-1]!=ch[n])x=fail[x];
    return x;
}
int res=0;
void add(int c){
    ch[++n]=c;
    int cur=get_fail(last);
    if(!tree[cur][c]){
        int now= new_node(len[cur]+2);
        fail[now]=tree[get_fail(fail[cur])][c];
        tree[cur][c]=now;
    }
    last=tree[cur][c];
    cnt[last]++;
}
void solve(){
    cin>>nn;
    init();
    string s;
    cin>>s;
    for(auto i:s)add(i-'0');
    long long anss=0;
    for(int i=p;i>=1;i--){
        cmt[i]+=cnt[i];
        cmt[fail[i]]+=cmt[i];
    }
    for(auto i:s)add(i-'0');
    for(int i=p;i>=1;i--)cnt[fail[i]]+=cnt[i];
    long long aans=0;
    for(int i=1;i<=p;i++){
        cnt[i]-=cmt[i];
//        cout<<cmt[i]<<" "<<cnt[i]<<" "<<len[i]<<endl;
        if(len[i]<=nn) aans=(aans+1ll*cnt[i]*cnt[i]%mod*len[i]%mod)%mod;
    }
    cout<<aans<<endl;
}

signed main() {
    int t = 1;
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    while (t--) solve();
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

5
01010

output:

39

result:

ok 1 number(s): "39"

Test #2:

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

input:

8
66776677

output:

192

result:

ok 1 number(s): "192"

Test #3:

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

input:

1
1

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 2ms
memory: 13708kb

input:

2
22

output:

12

result:

ok 1 number(s): "12"

Test #5:

score: 0
Accepted
time: 2ms
memory: 13712kb

input:

2
21

output:

2

result:

ok 1 number(s): "2"

Test #6:

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

input:

3
233

output:

10

result:

ok 1 number(s): "10"

Test #7:

score: 0
Accepted
time: 2ms
memory: 13792kb

input:

3
666

output:

54

result:

ok 1 number(s): "54"

Test #8:

score: 0
Accepted
time: 26ms
memory: 241580kb

input:

1000000
3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333...

output:

496166704

result:

ok 1 number(s): "496166704"

Test #9:

score: 0
Accepted
time: 99ms
memory: 687784kb

input:

3000000
2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222...

output:

890701718

result:

ok 1 number(s): "890701718"

Test #10:

score: 0
Accepted
time: 107ms
memory: 356768kb

input:

3000000
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999...

output:

224009870

result:

ok 1 number(s): "224009870"

Test #11:

score: 0
Accepted
time: 80ms
memory: 686988kb

input:

3000000
8989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989...

output:

51985943

result:

ok 1 number(s): "51985943"

Test #12:

score: 0
Accepted
time: 87ms
memory: 686352kb

input:

3000000
1911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911911...

output:

355676465

result:

ok 1 number(s): "355676465"

Test #13:

score: 0
Accepted
time: 101ms
memory: 616152kb

input:

3000000
7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777...

output:

788510374

result:

ok 1 number(s): "788510374"

Test #14:

score: 0
Accepted
time: 140ms
memory: 637960kb

input:

3000000
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555...

output:

691884476

result:

ok 1 number(s): "691884476"

Test #15:

score: 0
Accepted
time: 91ms
memory: 387836kb

input:

3000000
0990990909909909099090990990909909909099090990990909909099099090990990909909099099090990990909909099099090990909909909099099090990909909909099090990990909909909099090990990909909909099090990990909909099099090990990909909099099090990990909909099099090990909909909099099090990909909909099090990...

output:

701050848

result:

ok 1 number(s): "701050848"

Test #16:

score: 0
Accepted
time: 73ms
memory: 160072kb

input:

3000000
2772772727727727277272772772727727727277272772772727727277277272772772727727277277272772772727727277277272772727727727277277272772727727727277272772772727727727277272772772727727727277272772772727727277277272772772727727277277272772772727727277277272772727727727277277272772727727727277272772...

output:

486861605

result:

ok 1 number(s): "486861605"

Test #17:

score: 0
Accepted
time: 112ms
memory: 589676kb

input:

3000000
4554554545545545455454554554545545545455454554554545545455455454554554545545455455454554554545545455455454554545545545455455454554545545545455454554554545545545455454554554545545545455454554554545545455455454554554545545455455454554554545545455455454554545545545455455454554545545545455454554...

output:

450625621

result:

ok 1 number(s): "450625621"

Test #18:

score: 0
Accepted
time: 92ms
memory: 578060kb

input:

3000000
1181811811818118181181181811818118118181181181811818118118181181181811818118118181181811811818118118181181811811818118181181181811811818118181181181811811818118181181181811818118118181181181811818118118181181181811818118118181181811811818118118181181811811818118181181181811811818118181181181...

output:

649551870

result:

ok 1 number(s): "649551870"

Extra Test:

score: 0
Extra Test Passed