53532023-04-26 11:04:33sztomiRegexcpp11Futási hiba 57/1001.455s1045956 KiB
#include <bits/stdc++.h>

using namespace std;

const int INF = 1e5;

string a, b;

vector<vector<vector<int>>> dp;

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;
        dp.assign(a.size(), vector<vector<int>>(b.size(), vector<int>(2, -1)));
        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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2532 KiB
subtask29/9
3Elfogadva354ms338280 KiB
4Elfogadva1.08s689452 KiB
5Elfogadva904ms479556 KiB
6Elfogadva986ms640836 KiB
7Elfogadva1.36s739004 KiB
8Elfogadva1.243s815312 KiB
subtask311/11
9Elfogadva3ms2916 KiB
10Elfogadva3ms3016 KiB
11Elfogadva3ms3140 KiB
12Elfogadva2ms3248 KiB
13Elfogadva3ms3428 KiB
14Elfogadva2ms3516 KiB
subtask413/13
15Elfogadva3ms4080 KiB
16Elfogadva4ms4636 KiB
17Elfogadva4ms4860 KiB
18Elfogadva4ms4424 KiB
19Elfogadva3ms4040 KiB
20Elfogadva4ms4600 KiB
subtask524/24
21Elfogadva8ms8760 KiB
22Elfogadva14ms10916 KiB
23Elfogadva14ms10832 KiB
24Elfogadva14ms11632 KiB
25Elfogadva12ms9296 KiB
26Elfogadva19ms14028 KiB
subtask60/43
27Elfogadva437ms379580 KiB
28Elfogadva1.304s669040 KiB
29Elfogadva1.376s932284 KiB
30Futási hiba832ms1045956 KiB
31Elfogadva778ms467868 KiB
32Elfogadva987ms515452 KiB
33Elfogadva1.11s462684 KiB
34Elfogadva1.455s888188 KiB