QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#50674#1276. String Distanceckiseki#AC ✓859ms184388kbC++1.3kb2022-09-28 15:29:472022-09-28 15:29:49

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-09-28 15:29:49]
  • Judged
  • Verdict: AC
  • Time: 859ms
  • Memory: 184388kb
  • [2022-09-28 15:29:47]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100025;

int dp[maxn][21][21];
int mx[maxn][21];

void chmax(int &x, int v) {
    if (x < v)
        x = v;
}

void solve() {
    string A, B;
    cin >> A >> B;
    const int N = (int)A.size(), M = (int)B.size();
    A = '$' + A;
    B = '$' + B;
    memset(dp, 0, sizeof(dp));
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= M; j++) {
            for (int k = 0; k <= M; k++) {
                chmax(dp[i][j][k], dp[i-1][j][k]);
                chmax(dp[i][j][k], dp[i][j-1][k]);
                if (A[i] == B[j] && k > 0)
                    chmax(dp[i][j][k], k == 1 ? i : dp[i-1][j-1][k-1]);
            }
        }
        for (int k = 0; k <= M; k++) {
            mx[i][k] = -1;
            for (int j = 1; j <= M; j++) {
                mx[i][k] = max(mx[i][k], dp[i][j][k]);
            }
        }
    }

    int q;
    cin >> q;
    while (q--) {
        int l, r;
        cin >> l >> r;
        int ans = 0;
        for (int k = M; k >= 1; k--) {
            if (mx[r][k] >= l) {
                ans = k;
                break;
            }
        }
        cout << M + (r - l + 1) - ans * 2 << '\n';
    }
}

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    int t; cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 24ms
memory: 176080kb

input:

1
qaqaqwqaqaq
qaqwqaq
3
1 7
2 8
3 9

output:

4
2
0

result:

ok 3 lines

Test #2:

score: 0
Accepted
time: 859ms
memory: 184388kb

input:

10
rtedxofnuatdpogdzftepqhlwiavwisshpvlcwdkzlccofacdisafkpzmppgdwahposjlgqxqdupksokprgaymznbtyuenyikazrmjonfqawzcmuaqowrizdortxplnogmntadqqpwgolfcyqswtncqldgkrmgbovkyaxsuqwzftujheouhiynkjbzdnnhmreheoawkkljxmiwghewmqvjvmywukckjzwvfnjomthjkvijujdksawjmfrrgmhvpqazesdmeyjvougzmhlxrqmdyripgomcrawinxmfiyr...

output:

21
22
23
24
25
26
27
28
29
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
61
62
63
64
65
64
65
66
67
68
69
70
71
72
73
74
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
92
93
94
95
96
95
96
97
98
99
100
101
102
103
102
1...

result:

ok 995160 lines