QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#837851 | #8701. Border | qzs | 23 | 2ms | 9972kb | C++14 | 1.3kb | 2024-12-30 15:10:06 | 2024-12-30 15:10:07 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+3579;
const int base=13331;
const int N=2e6+100;
int n,h[N],p[N];
char s[N],t[N];
int maxn[N],ans[N][26];
signed main()
{
// freopen("q.in","r",stdin);
// freopen("q.out","w",stdout);
scanf("%s%s",s+1,t+1);
n=strlen(s+1);
p[0]=1;
for(int i=1;i<=n;i++)p[i]=1ll*p[i-1]*base%mod;
for(int i=1;i<=n;i++)h[i]=(h[i-1]+1ll*p[i-1]*s[i]%mod)%mod;
for(int i=1;i<=n;i++){
if(1ll*h[i]*p[n-i]%mod==1ll*(h[n]-h[n-i]+mod)%mod){
maxn[i]=max(maxn[i],i);
}
else {
int l=1,r=i;
while(l<r){
int mid=(l+r)>>1;
if(1ll*h[mid]*p[n-i]%mod==1ll*(h[n-i+mid]-h[n-i]+mod)%mod)l=mid+1;
else r=mid;
}
int k=1ll*(s[n-i+l]-s[l]+mod)*p[l-1]%mod;
int fir=k,sec=k*(l>=n-i+1);
if(1ll*(h[i]+fir)*p[n-i]%mod==((long long)h[n]-h[n-i]+mod+sec)%mod){
ans[l][s[n-i+l]-'a']=max(ans[l][s[n-i+l]-'a'],i);
}
k=1ll*(s[l]-s[n-i+l]+mod)*p[n-i+l-1]%mod;
fir=k*(n-i+l<=i);sec=k;
if(1ll*(h[i]+fir)*p[n-i]%mod==((long long)h[n]-h[n-i]+mod+sec)%mod){
ans[n-i+l][s[l]-'a']=max(ans[n-i+l][s[l]-'a'],i);
}
}
}
for(int i=1;i<=n;i++)maxn[i]=max(maxn[i],maxn[i-1]);
for(int i=1;i<=n;i++){
if(s[i]==t[i])printf("%d\n",maxn[n]);
else {
printf("%d\n",max(ans[i][t[i]-'a'],maxn[min(i,n-i+1)-1]));
}
}
}
详细
Subtask #1:
score: 23
Accepted
Test #1:
score: 23
Accepted
time: 0ms
memory: 7924kb
input:
cbaababaabacbaababaabacbaabacbaababaabacbaaba dabbababbabaabbafabbgbaabfebaabzababbayaabcac
output:
0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 17 17 17 17 17 17 17 17 17 17 17 6 6 6 6 6 6 6 6 6 6 6 0 0 0 3 0 1
result:
ok 45 numbers
Test #2:
score: 23
Accepted
time: 2ms
memory: 9908kb
input:
cbaababaabacbaabadbaababaabacbaabacbaaba aabwaxjbbabtalbabcasbabibbabaabbabaabiac
output:
3 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 23 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 0 0 0 0 0 1
result:
ok 40 numbers
Test #3:
score: 23
Accepted
time: 2ms
memory: 9972kb
input:
cadaabacabacabacabaabacabacadaabacabacaba bbbbbabtbabababalalbawababababbaoababebdc
output:
2 0 4 0 0 0 0 0 0 0 0 0 0 0 0 15 15 15 15 15 15 15 15 15 15 15 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1
result:
ok 41 numbers
Test #4:
score: 23
Accepted
time: 2ms
memory: 9972kb
input:
dabacbaadcbaadabacbaadabecbaadcbaadabacbaadabacbaa ababaabbyaarbabfbvdbuaoaaaabbaaabbababaabbababqadd
output:
2 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 29 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 0 0 0 0 0 0 2 1
result:
ok 50 numbers
Test #5:
score: 23
Accepted
time: 2ms
memory: 9944kb
input:
edacbcacacbcaecbcacacbcadacbcacacbca sabaaabtbaaabaaalblbawaeabaaababoaae
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 1
result:
ok 36 numbers
Test #6:
score: 23
Accepted
time: 2ms
memory: 9968kb
input:
cbaababaabacbaabacbaabdbaabacbaabacbaaba aabbababbaoaabbxbaabbaqabbabltbpagaabcac
output:
3 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 0 0 0 3 0 1
result:
ok 40 numbers
Subtask #2:
score: 0
Wrong Answer
Dependency #1:
100%
Accepted
Test #7:
score: 0
Wrong Answer
time: 0ms
memory: 7900kb
input:
abacadcabbacabbacabcabbacabacabbacabbacabcabbacabbacadcabbacabbacabcabbacabacabbacabbacabcabbacabbacadcabbacabbacabcabbacababacadcabbacabbacabcabbacabacabbacabbacabcabbacabbacadcabbacabbacaecabbacabacabbacabbacabcabbacabbacadcabbacabbacabcabbacababacadcabbacabbacabcabbacabacabbacabbacabcabbacabbacad...
output:
27 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75...
result:
wrong answer 3139th numbers differ - expected: '717', found: '4623'
Subtask #3:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%
Subtask #4:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%