QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#322239 | #8223. 字符串游戏 | zhouhuanyi | 25 | 581ms | 265452kb | C++20 | 2.1kb | 2024-02-06 16:29:34 | 2024-02-06 16:29:35 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<map>
#include<cstdlib>
#include<random>
#define N 2000000
#define M 25000000
#define K 16777215
#define Base1 131
#define Base2 171
#define mod1 998244353
#define mod2 998244853
using namespace std;
mt19937 RAND(random_device{}());
int read()
{
char c=0;
int sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
int MD1(int x)
{
return x>=mod1?x-mod1:x;
}
int MD2(int x)
{
return x<0?x+mod1:x;
}
int MD3(int x)
{
return x>=mod2?x-mod2:x;
}
int MD4(int x)
{
return x<0?x+mod2:x;
}
struct reads
{
int hsh1,hsh2;
bool operator == (const reads &t)const
{
return hsh1==t.hsh1&&hsh2==t.hsh2;
}
};
reads rd[26],zero;
reads operator + (reads a,reads b)
{
return (reads){MD1(a.hsh1+b.hsh1),MD2(a.hsh2+b.hsh2)};
}
reads operator - (reads a,reads b)
{
return (reads){MD3(a.hsh1-b.hsh1),MD4(a.hsh2-b.hsh2)};
}
reads operator * (reads a,reads b)
{
return (reads){1ll*a.hsh1*b.hsh1%mod1,1ll*a.hsh2*b.hsh2%mod2};
}
struct node
{
reads num;
int data,nxt;
};
node edge[M+1];
string s;
int len,head[K+1],dp[N+1];
void adder(reads x,int d)
{
int ds=(x.hsh1^x.hsh2)&K;
for (int i=head[ds];i>0;i=edge[i].nxt)
if (edge[i].num==x)
{
edge[i].data+=d;
return;
}
edge[++len]=(node){x,d,head[ds]},head[ds]=len;
return;
}
int query(reads x)
{
int ds=(x.hsh1^x.hsh2)&K;
for (int i=head[ds];i>0;i=edge[i].nxt)
if (edge[i].num==x)
return edge[i].data;
return 0;
}
int main()
{
bool op=1;
reads res;
int sz;
for (int i=0;i<26;++i) rd[i]=(reads){(int)(RAND()%mod1),(int)(RAND()%mod2)};
cin>>s;
if (s.length()<=5000) sz=s.length();
else sz=25;
for (int i=0;i<s.length();++i) op&=(s[i]==s[0]);
if (op)
{
printf("%d\n",(s.length()+1)>>1);
return 0;
}
for (int i=s.length();i>=1;--i)
{
res=zero;
for (int j=1;j<=sz&&i+j-1<=s.length();++j) res=res*(reads){Base1,Base2}+rd[s[i+j-2]-'a'],adder(res,1),dp[i]=max(dp[i],query(res)-dp[i+j]);
}
printf("%d\n",dp[1]);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 558ms
memory: 264936kb
input:
abbabbbbabbaaaaabbbaabaaaaaabbbaabbabababaabababaababaaaaaabaaabaaabbbbababaaabbbabababbbabbbaabaaababbbaabaabbaaabbababaaaaabbbaabaaabbaabaabaaabaaabaababaabbbbbbbbabbbbbabbbaabababbaababbbbbabbbbaaabbaabaabaaabbabbaaabbaaababaabbbaabbbaaaabbababbabaababababaaaabbaaaabaabaaaababaaabababbbaaabababbb...
output:
1281
result:
ok single line: '1281'
Test #2:
score: 0
Accepted
time: 538ms
memory: 265452kb
input:
aaaabababbabbbbbabbbbbbbbbbbabbbbbabbbaaabbbbaababaabbbbbbbbbbbbbabaabbaaabaababaabaaabbabbbabbbabaabbaabaababbbbbbaaabbbbaaabaabbbabbbabbabaabbbbabbbaabaaaabbbbbabaaaabaabbabaaabbaabbabbaaabbabaaababbababababaabaaaabaabaabaaabaabbbabbbbbaababbabbbabbbbababaaabbabbaaaabbbaaabaabbbaaaaaababaababbbbba...
output:
1483
result:
ok single line: '1483'
Test #3:
score: 0
Accepted
time: 562ms
memory: 264564kb
input:
bbaaababbbabbbaabbbbbbababbbabbbbbbbbaabbbbbbbbbbaaabbbbbbbbbbbbbbbabbabbbabaababbbabbbbabbabbabbbbabbbbbbbbbaaababbaaabbbaabbabbbbbbbbbbbbbbbbbbbbabbbbbbababababbbbbbbbbabababaabbbbbbabbbbaabbababbaaababbbbabbbbabbbabbbbbabbbbbabbbbbbbbbbabbaabbbabababbbbaababbbababbbbabbabbaabbbbbbabbbbbababbbbaba...
output:
2310
result:
ok single line: '2310'
Test #4:
score: 0
Accepted
time: 561ms
memory: 263736kb
input:
abbbbbbbbababbbbbbbbbabbbbbbbbabbbabbbbbaaabbbbbabbbbababbbabbbbbbaabbabbbbbaabbbbabbabbbbbbbabbbbaaabbbbbbaabbbbbbbbbbbbbbbbbbbbbabbbabbbabbbbbbbabbbbbbbabbbabbbbbbbbabbbabbbbbbbbbbbbbbbbbaababbbbbbbbbbabbbbbbbbbbbbbababbbbbbbabbbbbbababbbabbbbbaabbbbbbbbbaabbabbbbaabbbabbbbbbbbbbbbbabbbbbbbbbbbbbb...
output:
1
result:
ok single line: '1'
Test #5:
score: 0
Accepted
time: 553ms
memory: 264036kb
input:
bbbabbbbbbbbbbbbbbbbbbbbabbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbabbbabbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbabbbbbbbbbabbbbabbabbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbabbbbbbbbbbbabbbbbbbbbbbbbbbbbbbabbbbbbabbabbbbbbaabbbabbbbbbbbbbbbbbbbabbbbbabbbabbbbbbbabbbababbabbbbba...
output:
3680
result:
ok single line: '3680'
Test #6:
score: 0
Accepted
time: 531ms
memory: 259300kb
input:
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbb...
output:
2454
result:
ok single line: '2454'
Test #7:
score: 0
Accepted
time: 548ms
memory: 252248kb
input:
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
output:
2702
result:
ok single line: '2702'
Test #8:
score: 0
Accepted
time: 181ms
memory: 113732kb
input:
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...
output:
2499
result:
ok single line: '2499'
Test #9:
score: 0
Accepted
time: 579ms
memory: 264756kb
input:
amahaaajakalaiacabararasafaxasagamajaqagaqaeauauayagasadazavaeagabaaajalajavalatauapacaearaeagafawaaapawadaiaaapalahanavazasayamaiafagabahaxanacaaagaoadasakayagawaiaharanamaraiaramazaoagajataoazasalavatafaoalacaqavanafatajawauayakaoaqawawayasatasazagafacayasasawaqayadasaiazaxamaaaragataxawazadalaxak...
output:
2475
result:
ok single line: '2475'
Test #10:
score: 0
Accepted
time: 576ms
memory: 265300kb
input:
afabagadaeaeacaeaeafagafagababaaagacabaaagadacafadabaaaaacadaaagafacagadaeacacacabadagadaaabafadafadadaeafaaagadafabaeaaafaeaeaaaeabaaabaaaeafagadaaaaacaeaaaaacabaeacadagafafacacabaeaaagagaeaaadagabadaaaaagafagaaabaaaaafacafacadaaagabaaafadagacaaafafadadadacadadaaacagabacaaabacaeadabacagaeagagafafag...
output:
2807
result:
ok single line: '2807'
Subtask #2:
score: 10
Accepted
Test #11:
score: 10
Accepted
time: 569ms
memory: 86148kb
input:
bbabbbaaabbbabaaaabababbabbbbbabbbbbbbbbbbabbbbbabbbaaabbbbaababaabbbbbbbbbbbbbabaabbaaabaababaabaaabbabbbabbbabaabbaabaababbbbbbaaabbbbaaabaabbbabbbabbabaabbbbabbbaabaaaabbbbbabaaaabaabbabaaabbaabbabbaaabbabaaababbababababaabaaaabaabaabaaabaabbbabbbbbaababbabbbabbbbababaaabbabbaaaabbbaaabaabbbaaaaa...
output:
295499
result:
ok single line: '295499'
Test #12:
score: 0
Accepted
time: 550ms
memory: 84436kb
input:
bbaababaaabababbbabbbbbabaaaababababbaababbaaabbabbbababaaaababbbbabbbababbaaaababbbaabaababbabbbaaaabbabbbabbaaaababababaabbbbbbaaababaabaaababaabababbbababbbbabbabaabaaabaaabaaababababaaabbbaaaaabaabbbbbbbababbabababbaabaababaabbbbaaababaabbaaabaabaabbbbaaabababbbaabaaabaaaabaaaaaabaaabaaaabbaaaab...
output:
142897
result:
ok single line: '142897'
Test #13:
score: 0
Accepted
time: 581ms
memory: 85780kb
input:
bbaaabaabababaaababbababaabbaaaabbabbbaabaaabaabaaaabbababbbaaabbaaaabaaabaaabbbabbbbabbaaaaababbbaabbabababaabbabbabbabbaaabbbaababaaabbabbaababaabaaabbbaababbbaaabbaaabbaabaabbababbaababbbbbaabaabababababaaaaabbbbabbabbbbabbbbabbbbabaabbbaabbabbaaaabbabaaabbbababbbaaabaaabbaaabaaabbbaabaaaabaabbaa...
output:
204172
result:
ok single line: '204172'
Test #14:
score: 0
Accepted
time: 543ms
memory: 84100kb
input:
baabaabbaaababbbbbababbababababaaaaaabaabaabaaabaabbbbbbabaabaabbbbabaaaabbaabbbbababbabbbbaabababbbabaabaaabbbaabbaaaabbbabbaabaabbbbababbbabbbabbababaaabbabbbbbaaabaaababaaaabbbbabbaaaaabbabbaaabbbaababbaabbbabaaabababbaabbbbbbbaaababbbabaabaaababbabbaaaabaabbbabbaabaababababaabaabbaabbbbbbaabaaab...
output:
138102
result:
ok single line: '138102'
Test #15:
score: 0
Accepted
time: 564ms
memory: 84288kb
input:
bbaabbaaaaaabbbababbbbbbbaaabaabaabbababbaaaaababaaabababaabbbaaabbbababbbbaabbaaaabbabaaabaaaababbbaaaaaabbbbabbbaababbaabaabbbaabbbbbaababbbabbbabbaaabaaabbaabababaaabbaaaabaaabbaabbbbaabbbaaaaaabbbbabaabbbbabbbbbbbababbaabbbbbbaabaabaaaaabbbababbbabbbababababababbbbaaabbabaaabbaaaaaabbaaaabaaabab...
output:
142809
result:
ok single line: '142809'
Subtask #3:
score: 5
Accepted
Test #16:
score: 5
Accepted
time: 12ms
memory: 5212kb
input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
output:
493827
result:
ok single line: '493827'
Subtask #4:
score: 0
Wrong Answer
Test #17:
score: 25
Accepted
time: 110ms
memory: 81736kb
input:
bbbbbbbbbaabbbbbabaaabaabaaabaaaaabaaaabbbbbbbaaaabaabbbababbaaaabbabababbbabbbbabbabaabaaabbabbaaababaaabaaaabababbbbbbbaabbaaabbabbbbbabbbaaaaababbbaaabaabababbabbabababbabbabaaaaabaaaaaabbbabaabbbaaaabbabababaaababaabbbbbbbaaabbbabaabaaaabaabaababbaaaabababaabbbaaaababaaababbbbbbabbbbbbaabbabbaaa...
output:
43524
result:
ok single line: '43524'
Test #18:
score: -25
Wrong Answer
time: 109ms
memory: 81940kb
input:
baaaabbbabbbbabbbbabbbabbbbbabbbabbaabbbbbbabbabaabbbbbbbbbbbbaabbbbbaaabaaabbbbbaabbbbbbbbbbbbbababbbbabbbbbbbbbbbbbbbbabbbbbbbbabbbbabbbbaabaabbbabbbabbbaabbbbbabbbbbbaaabbbbbbaaabbaaabbabbabbbbbaabbbbbabbabababbbbbbbbbbbbabbbbaabbbbabbbbbbbbbbbbbbbabbbbbabbabbabababbbabbbbaabbabbbbbbbbaabbaabbbbb...
output:
107147
result:
wrong answer 1st lines differ - expected: '107148', found: '107147'
Subtask #5:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #4:
0%
Subtask #6:
score: 0
Skipped
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #5:
0%