QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#794439#8954. 一般路过串串题misfits#30 60ms40724kbC++142.3kb2024-11-30 14:17:102024-11-30 14:17:10

Judging History

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

  • [2024-11-30 14:17:10]
  • 评测
  • 测评结果:30
  • 用时:60ms
  • 内存:40724kb
  • [2024-11-30 14:17:10]
  • 提交

answer

#include<bits/stdc++.h>
#define LL long long
#define SZ(x) ((LL)(x.size()))
#define all(x) (x).begin(),(x).end()
using namespace std;
inline LL read(){
  LL q=0,w=1;char ch=getchar();
  while(ch>'9' || ch<'0'){if(ch=='-')w=-1;ch=getchar();}
  while(ch>='0'&&ch<='9'){q=q*10+(ch-'0');ch=getchar();}
  return q*w;
}
void write(LL x){
  if(x<0){putchar('-');x=(-x);}
  if(x>9)write(x/10);
  putchar('0'+x%10);
}
inline void writeln(LL x){write(x);puts("");}
inline void writecs(LL x){write(x);putchar(' ');}

inline void dmax(LL &x,LL y){if(x<y)x=y;return ;}
inline void dmin(LL &x,LL y){if(x>y)x=y;return ;}

#define cout cerr
#define pb push_back

#define link __link
template<LL N,LL M>struct SAM{
  LL tr[N<<1][M+1],link[N<<1]={-1},len[N<<1],cur,tot;
  inline void extend(LL c){
    LL x=cur;cur=++tot;len[cur]=len[x]+1;
    while(x!=-1&&!tr[x][c]){tr[x][c]=cur;x=link[x];}
    if(x==-1){link[cur]=0;return ;}
    LL y=tr[x][c];
    if(len[y]==len[x]+1){link[cur]=y;return ;}
    LL up=++tot,dn=y,lk=link[y];
    len[up]=len[x]+1;link[up]=lk;link[cur]=link[dn]=up;
    for(LL i=0;i<M;i++)tr[up][i]=tr[dn][i];
    while(x!=-1&&tr[x][c]==y){tr[x][c]=up;x=link[x];}
    return ;
  }
  vector<LL>E[N<<1];LL cnt[N];
  void dfs(LL x){
    for(auto y:E[x]){dfs(y);cnt[x]+=cnt[y];}
    return ;
  }
  inline void init(){
    for(LL i=1;i<=tot;i++)E[link[i]].pb(i);
    dfs(0);return ;
  }
};

inline LL qpow(LL a,LL b,LL p){LL ans=1;while(b){if(b&1)ans=(ans*a)%p;b>>=1;a=(a*a)%p;}return ans;}
const LL mod = 1000000007 ;
inline void amod(LL &x,LL y){x+=y;if(x>=mod)x-=mod;}
inline void smod(LL &x,LL y){x-=y;if(x<0)x+=mod;}
inline LL dmod(LL x){if(x<0)x+=mod;if(x>=mod)x-=mod;return x;}
inline LL inv(LL x){return qpow(x,mod-2,mod);}

const LL N = 500000+95 ;
LL n,m;char a[N],b[N];SAM<N,26>T;

int main(){
  scanf("%s",a+1);n=strlen(a+1);
  scanf("%s",b+1);m=strlen(b+1);

  for(LL t=1;t<=m;t++){LL c=(LL)(b[t]-'a');T.extend(c);T.cnt[T.cur]++;}
  T.init();LL ans=0;
  for(LL l=1;l<=n;l++){
    LL p=0;
    for(LL r=l;r<=n;r++){
      LL c=(LL)(a[r]-'a');if(!T.tr[p][c])break;
      p=T.tr[p][c];LL occ=T.cnt[p],sum=0;
      for(LL i=0;i<l;i++)for(LL j=r;j<=n;j++)amod(sum,(j-i)*(j-i)%mod);
      amod(ans,sum*occ%mod);
    }
  }
  writeln(ans);
  return 0;
}

详细

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 5ms
memory: 38536kb

input:

aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa
bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba

output:

496507152

result:

ok "496507152"

Test #2:

score: 10
Accepted
time: 6ms
memory: 40708kb

input:

eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb
acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea

output:

580397857

result:

ok "580397857"

Test #3:

score: 10
Accepted
time: 8ms
memory: 40724kb

input:

fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc
ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef

output:

380084227

result:

ok "380084227"

Test #4:

score: 10
Accepted
time: 0ms
memory: 40664kb

input:

boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj
afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae

output:

171472585

result:

ok "171472585"

Test #5:

score: 10
Accepted
time: 0ms
memory: 40712kb

input:

ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm
ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn

output:

122853177

result:

ok "122853177"

Test #6:

score: 10
Accepted
time: 0ms
memory: 38608kb

input:

tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj
idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp

output:

113266102

result:

ok "113266102"

Subtask #2:

score: 20
Accepted

Dependency #1:

100%
Accepted

Test #7:

score: 20
Accepted
time: 60ms
memory: 38724kb

input:

aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...

output:

520547094

result:

ok "520547094"

Test #8:

score: 20
Accepted
time: 22ms
memory: 40660kb

input:

adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...

output:

782266849

result:

ok "782266849"

Test #9:

score: 20
Accepted
time: 20ms
memory: 40604kb

input:

baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...

output:

367143412

result:

ok "367143412"

Test #10:

score: 20
Accepted
time: 16ms
memory: 38540kb

input:

hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...

output:

661539752

result:

ok "661539752"

Test #11:

score: 20
Accepted
time: 11ms
memory: 40708kb

input:

bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...

output:

507358998

result:

ok "507358998"

Test #12:

score: 20
Accepted
time: 9ms
memory: 38616kb

input:

vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...

output:

138681994

result:

ok "138681994"

Subtask #3:

score: 0
Time Limit Exceeded

Dependency #2:

100%
Accepted

Test #13:

score: 0
Time Limit Exceeded

input:

abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...

output:


result:


Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%