5354 2023. 04. 26 11:13:53 sztomi Regex cpp11 Elfogadva 100/100 569ms 103328 KiB
#include <bits/stdc++.h>

using namespace std;

const int INF = 1e5;
const int MAXN = 2500;

string a, b;

int dp[MAXN][MAXN][2];

int megold(int a_ind, int b_ind, bool nyitott){
    if(a_ind == a.size()){
        if(b_ind == b.size()){
            return 0;
        }
        else{
            return (b.size() - b_ind) + 3*(!nyitott);
        }
    }
    if(b_ind == b.size()){
        return (a.size() - a_ind) + 3*(!nyitott);
    }

    if(dp[a_ind][b_ind][nyitott] != -1){
        return dp[a_ind][b_ind][nyitott];
    }

    int ret = INF;
    if(nyitott){
        ret = min(ret, megold(a_ind+1, b_ind, true) + 1);
        ret = min(ret, megold(a_ind, b_ind+1, true) + 1);

        if(a[a_ind] == b[b_ind]){
            ret = min(ret, megold(a_ind+1, b_ind+1, false) + 1);
        }
    }
    else{
        ret = min(ret, megold(a_ind+1, b_ind, true) + 4);
        ret = min(ret, megold(a_ind, b_ind+1, true) + 4);

        if(a[a_ind] == b[b_ind]){
            ret = min(ret, megold(a_ind+1, b_ind+1, false) + 1);
        }
    }

    dp[a_ind][b_ind][nyitott] = ret;
    return ret;
}


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    // dp proba?
    int t;
    cin >> t;
    while(t--){
        cin >> a >> b;
        memset(dp, -1, sizeof(dp));
        cout << megold(0, 0, false) << "\n";
    }

/*
    for(int k = 0; k < 2; k++){
        cout << "\t";
        for(int i = 0; i < b.size(); i++){
            cout << i << "\t";
        }
        cout << "\n";
        for(int i = 0; i < a.size(); i++){
            cout << i << "\t";
            for(int j = 0; j < b.size(); j++){
                cout << dp[i][j][k] << "\t";
            }
            cout << "\n";
        }
        cout << "----------------------\n";
    }
*/
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 43ms 99620 KiB
2 Elfogadva 43ms 99940 KiB
subtask2 9/9
3 Elfogadva 120ms 100792 KiB
4 Elfogadva 400ms 101016 KiB
5 Elfogadva 400ms 101156 KiB
6 Elfogadva 400ms 101332 KiB
7 Elfogadva 540ms 101268 KiB
8 Elfogadva 481ms 101516 KiB
subtask3 11/11
9 Elfogadva 43ms 101140 KiB
10 Elfogadva 67ms 101472 KiB
11 Elfogadva 64ms 101680 KiB
12 Elfogadva 64ms 101640 KiB
13 Elfogadva 64ms 101632 KiB
14 Elfogadva 97ms 101908 KiB
subtask4 13/13
15 Elfogadva 43ms 101856 KiB
16 Elfogadva 97ms 101864 KiB
17 Elfogadva 67ms 101856 KiB
18 Elfogadva 97ms 101920 KiB
19 Elfogadva 67ms 101920 KiB
20 Elfogadva 65ms 101920 KiB
subtask5 24/24
21 Elfogadva 45ms 102088 KiB
22 Elfogadva 101ms 102304 KiB
23 Elfogadva 68ms 102456 KiB
24 Elfogadva 68ms 102396 KiB
25 Elfogadva 68ms 102572 KiB
26 Elfogadva 70ms 102572 KiB
subtask6 43/43
27 Elfogadva 134ms 103136 KiB
28 Elfogadva 476ms 103052 KiB
29 Elfogadva 486ms 103220 KiB
30 Elfogadva 560ms 103276 KiB
31 Elfogadva 337ms 103028 KiB
32 Elfogadva 446ms 103224 KiB
33 Elfogadva 569ms 103164 KiB
34 Elfogadva 492ms 103328 KiB