QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#873836#9901. 匹配YangTY100 ✓62ms14284kbC++141.7kb2025-01-27 00:31:462025-01-27 00:31:46

Judging History

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

  • [2025-01-27 00:31:46]
  • 评测
  • 测评结果:100
  • 用时:62ms
  • 内存:14284kb
  • [2025-01-27 00:31:46]
  • 提交

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