QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#873835#9901. 匹配YangTY90 60ms14404kbC++141.6kb2025-01-27 00:30:052025-01-27 00:30:05

Judging History

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

  • [2025-01-27 00:30:05]
  • 评测
  • 测评结果:90
  • 用时:60ms
  • 内存:14404kb
  • [2025-01-27 00:30:05]
  • 提交

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;
    if (check(mid)) {
      ans = mid;
      l = mid + 1;
    } else r = mid - 1;
  }

  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;
}

详细


Pretests


Final Tests

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 9728kb

input:

baaaaaaaaa
0111111110

output:

-1

result:

wrong answer wrong answer

Test #2:

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

input:

abbabbabab
0100100000

output:

bba

result:

ok Correct output: valid string T.

Test #3:

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

input:

abbabaabba
0000000000

output:

ytytest

result:

ok Correct output: valid string T.

Test #4:

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

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: 7744kb

input:

muumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummumuumummuummumuumummumuummvumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummu...

output:

mmuumummumuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummumuumummuummumuumummumuummuumummuummumuu

result:

ok Correct output: valid string T.

Test #7:

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

input:

mppmppmpmppmppmpmppmpmppmppmpmdpmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppm...

output:

mppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppm

result:

ok Correct output: valid string T.

Test #8:

score: 10
Accepted
time: 59ms
memory: 12356kb

input:

falgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgsh...

output:

falgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgsh...

result:

ok Correct output: valid string T.

Test #9:

score: 10
Accepted
time: 58ms
memory: 12356kb

input:

cnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaozn...

output:

znacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacna...

result:

ok Correct output: valid string T.

Test #10:

score: 10
Accepted
time: 60ms
memory: 14404kb

input:

bvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvov...

output:

bvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbv...

result:

ok Correct output: valid string T.