QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#873836 | #9901. 匹配 | YangTY | 100 ✓ | 62ms | 14284kb | C++14 | 1.7kb | 2025-01-27 00:31:46 | 2025-01-27 00:31:46 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
char S[maxn], P[maxn], T[maxn];
int n, nxt[maxn], match[maxn];
int onepos = -1;
void KMP(char* T, int m, int* match) {
nxt[0] = -1;
for (int i = 2, j = 0; i <= m; ++i) {
while (j && T[j + 1] != T[i]) j = nxt[j];
if (T[j + 1] == T[i]) ++j;
nxt[i] = j;
}
memset(match, 0, (n + 1) * sizeof(int));
for (int i = 1, j = 0; i <= n; ++i) {
while (j && S[i] != T[j + 1]) j = nxt[j];
if (S[i] == T[j + 1]) ++j;
if (j == m) {
match[i - m + 1] = 1;
j = nxt[j];
}
}
}
bool check(int m) {
for (int i = 1; i <= m; ++i)
T[i] = S[onepos + i - 1];
KMP(T, m, match);
for (int i = 1; i <= n; ++i) if (P[i] == '1' && !match[i]) return false;
return true;
}
int main() {
cin >> (S + 1) >> (P + 1);
n = strlen(S + 1);
for (int i = 1; i <= n; ++i) {
if (P[i] == '1') {
onepos = i;
}
}
if (onepos == -1) {
// 随便输出
cout << "ytytest" << '\n';
return 0;
}
int ans = -1, l = 1, r = n - onepos + 1;
while (l <= r) {
int mid = (l + r) >> 1;
// printf("cheking %d ", mid);
if (check(mid)) {
ans = mid;
l = mid + 1;
// puts("success");
} else r = mid - 1;//, puts("failed");
}
if (ans == -1) {
cout << "-1" << endl;
return 0;
}
for (int i = 1; i <= ans; ++i)
T[i] = S[onepos + i - 1];
KMP(T, ans, match);
bool flg = true;
for (int i = 1; i <= n; ++i) if (P[i] != match[i] + '0') flg = false;
if (!flg) {
cout << "-1" << endl;
return 0;
}
for (int i = 1; i <= ans; ++i) putchar(T[i]);
return 0;
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 0ms
memory: 7692kb
input:
baaaaaaaaa 0111111110
output:
aa
result:
ok Correct output: valid string T.
Test #2:
score: 10
Accepted
time: 1ms
memory: 7592kb
input:
abbabbabab 0100100000
output:
bbab
result:
ok Correct output: valid string T.
Test #3:
score: 10
Accepted
time: 0ms
memory: 5716kb
input:
abbabaabba 0000000000
output:
ytytest
result:
ok Correct output: valid string T.
Test #4:
score: 10
Accepted
time: 0ms
memory: 9640kb
input:
trtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrtnrtrttrtkrtrttrttrtrttrtrttrttrtrttrttetrttrtrtt 0000000000001000000000000000000001000000000000000000000000000000000100000000000000000000000000000000
output:
ttrtrttrtrttrttrtrt
result:
ok Correct output: valid string T.
Test #5:
score: 10
Accepted
time: 0ms
memory: 7756kb
input:
bcljjabnbcljjabnbcljjagnbcljjabnbcljjabnbcljjabnbcljjahnbcljjabnbcljjabnbcljjabnbcljjabnbcljjabnbclj 0000000000000000000000010000000100000000000000000000000100000001000000000000000100000000000000000000
output:
-1
result:
ok Correct output: -1
Test #6:
score: 10
Accepted
time: 0ms
memory: 7768kb
input:
muumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummumuumummuummumuumummumuummvumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummu...
output:
mmuumummumuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummumuumummuummumuumummumuummuumummuummumuum
result:
ok Correct output: valid string T.
Test #7:
score: 10
Accepted
time: 0ms
memory: 7756kb
input:
mppmppmpmppmppmpmppmpmppmppmpmdpmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppm...
output:
mppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmp
result:
ok Correct output: valid string T.
Test #8:
score: 10
Accepted
time: 59ms
memory: 14272kb
input:
falgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgsh...
output:
falgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgsh...
result:
ok Correct output: valid string T.
Test #9:
score: 10
Accepted
time: 55ms
memory: 14284kb
input:
cnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaozn...
output:
znacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacna...
result:
ok Correct output: valid string T.
Test #10:
score: 10
Accepted
time: 62ms
memory: 12356kb
input:
bvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvov...
output:
bvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbv...
result:
ok Correct output: valid string T.
Extra Test:
score: 0
Extra Test Passed