QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#839674#9901. 匹配kenkenken#100 ✓16ms22572kbC++232.1kb2025-01-02 00:35:372025-01-02 00:35:38

Judging History

This is the latest submission verdict.

  • [2025-01-02 00:35:38]
  • Judged
  • Verdict: 100
  • Time: 16ms
  • Memory: 22572kb
  • [2025-01-02 00:35:37]
  • Submitted

answer

#include <bits/stdc++.h>
#define F first
#define S second
#define pb push_back
#define pob pop_back
#define all(x) begin(x), end(x)
#define SZ(x) ssize(x)
using namespace std;

#ifdef LOCAL
#define HEHE freopen("in.txt", "r", stdin);
#define debug(HEHE...) cerr << #HEHE << " = ", dout(HEHE)
void dout() { cerr << "\n"; }
template<typename T, typename... U>
void dout(T t, U... u) { cerr << t << ' '; dout(u...); }
#else
#define HEHE ios_base::sync_with_stdio(0), cin.tie(0);
#define debug(...) 7122
#endif

#define FOR(i, a, b) for (int i = (a); i <= (b); i++)

#define chmax(a, b) a = (a) > (b) ? (a) : (b)
#define chmin(a, b) a = (a) < (b) ? (a) : (b)

#define int long long
const int MAXN = 1e6 + 5, mod = 1e9 + 9, M = 137;

int n;
string s, p;
int hs[MAXN], pw[MAXN];
void build() {
    pw[0] = 1;
    FOR (i, 1, n) {
        hs[i] = (hs[i - 1] * M + s[i]) % mod;
        pw[i] = pw[i - 1] * M % mod;
    }
}
vector<int> pos;
signed main() {
    HEHE
    cin >> s >> p;
    n = s.size();
    s = " " + s; p = " " + p;
    build();
    FOR (i, 1, n) {
        if (p[i] == '1') pos.pb(i);
    }
    if (!pos.size()) {
        s[0] = 'a';
        cout << s << '\n';
        return 0;
    }
    auto ok = [&](int len) {
        int mn = mod, mx = 0;
        for (int i : pos) {
            int x = hs[i + len - 1] + mod - pw[len] * hs[i - 1] % mod;
            x %= mod;
            chmax(mx, x);
            chmin(mn, x);
        }
        return mn == mx;
    };
    int rb = n - pos.back() + 2;
    int lb = 0;
    while (lb < rb - 1) {
        int mid = (lb + rb) / 2;
        if (ok(mid)) lb = mid;
        else rb = mid;
    }

    int len = lb;
    int x = hs[pos[0] + len - 1] + mod - pw[len] * hs[pos[0] - 1] % mod;
    x %= mod;
    FOR (i, 1, n - len + 1) {
        if (p[i] == '0') {
            int y = hs[i + len - 1] + mod - pw[len] * hs[i - 1] % mod;
            y %= mod;
            if (x == y) return cout << "-1\n", 0;
        }
    }
    if (len == 0) return cout << "-1\n", 0;
    cout << s.substr(pos[0], len) << '\n';
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

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

input:

baaaaaaaaa
0111111110

output:

aa

result:

ok Correct output: valid string T.

Test #2:

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

input:

abbabbabab
0100100000

output:

bbab

result:

ok Correct output: valid string T.

Test #3:

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

input:

abbabaabba
0000000000

output:

aabbabaabba

result:

ok Correct output: valid string T.

Test #4:

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

input:

trtrttrtrttrttrtrttrtrttrttrtrttrttrtrttrtrttrttrtrtnrtrttrtkrtrttrttrtrttrtrttrttrtrttrttetrttrtrtt
0000000000001000000000000000000001000000000000000000000000000000000100000000000000000000000000000000

output:

ttrtrttrtrttrttrtrt

result:

ok Correct output: valid string T.

Test #5:

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

input:

bcljjabnbcljjabnbcljjagnbcljjabnbcljjabnbcljjabnbcljjahnbcljjabnbcljjabnbcljjabnbcljjabnbcljjabnbclj
0000000000000000000000010000000100000000000000000000000100000001000000000000000100000000000000000000

output:

-1

result:

ok Correct output: -1

Test #6:

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

input:

muumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummumuumummuummumuumummumuummvumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummu...

output:

mmuumummumuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuumummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummuummumuummuumummumuumummuummumuummuumummuummumuumummumuummuumummumuumummuummumuumummumuummuumummuummumuum

result:

ok Correct output: valid string T.

Test #7:

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

input:

mppmppmpmppmppmpmppmpmppmppmpmdpmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppm...

output:

mppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmpmppmppmpmppmpmppmppmp

result:

ok Correct output: valid string T.

Test #8:

score: 10
Accepted
time: 16ms
memory: 21660kb

input:

falgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgsh...

output:

falgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgshffalgsh...

result:

ok Correct output: valid string T.

Test #9:

score: 10
Accepted
time: 11ms
memory: 22572kb

input:

cnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaozn...

output:

znacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacnaoznacna...

result:

ok Correct output: valid string T.

Test #10:

score: 10
Accepted
time: 9ms
memory: 22572kb

input:

bvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvov...

output:

bvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbvbvovbv...

result:

ok Correct output: valid string T.

Extra Test:

score: 0
Extra Test Passed