53452023-04-26 10:02:07sztomiRegexcpp11Hibás válasz 0/1001.368s1045884 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;
        }
    }
    if(b_ind == b.size()){
        return (a.size() - a_ind) + 3;
    }

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

    int ret = INF;
    // lehet egyutt haladni
    if(a[a_ind] == b[b_ind]){
        // ha nincs nyitva akkor sztem nincs ertelme kinyitni egyet
        if(!nyitott){
            ret = min(ret, megold(a_ind+1, b_ind+1, false) + 1);
        }
        else{
            // nyitva tartjuk
            ret = min(ret, megold(a_ind+1, b_ind, true) + 1);
            ret = min(ret, megold(a_ind, b_ind+1, true) + 1);
            // bezarjuk
            ret = min(ret, megold(a_ind+1, b_ind+1, true) + 1);
        }
    }
    else{
        if(!nyitott){
            // nyitunk egy ujat
            ret = min(ret, megold(a_ind+1, b_ind, true) + 1 + 3);
            ret = min(ret, megold(a_ind, b_ind+1, true) + 1 + 3);
        }
        else{
            ret = min(ret, megold(a_ind+1, b_ind, true) + 1);
            ret = min(ret, megold(a_ind, b_ind+1, true) + 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, 0) << "\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Hibás válasz3ms2372 KiB
subtask20/9
3Hibás válasz379ms337600 KiB
4Hibás válasz1.118s689240 KiB
5Hibás válasz916ms479576 KiB
6Hibás válasz1.014s640800 KiB
7Hibás válasz1.299s738988 KiB
8Hibás válasz1.286s815448 KiB
subtask30/11
9Elfogadva3ms3320 KiB
10Elfogadva3ms3308 KiB
11Hibás válasz3ms3292 KiB
12Hibás válasz3ms3300 KiB
13Hibás válasz3ms3424 KiB
14Hibás válasz3ms3656 KiB
subtask40/13
15Hibás válasz3ms4536 KiB
16Hibás válasz4ms5108 KiB
17Hibás válasz4ms5468 KiB
18Hibás válasz4ms5264 KiB
19Hibás válasz3ms4632 KiB
20Hibás válasz4ms5400 KiB
subtask50/24
21Hibás válasz7ms9524 KiB
22Hibás válasz10ms11796 KiB
23Hibás válasz13ms11760 KiB
24Hibás válasz14ms12416 KiB
25Hibás válasz12ms9996 KiB
26Hibás válasz17ms14396 KiB
subtask60/43
27Hibás válasz391ms379924 KiB
28Hibás válasz1.246s669124 KiB
29Hibás válasz1.296s931828 KiB
30Futási hiba824ms1045884 KiB
31Hibás válasz745ms467940 KiB
32Hibás válasz876ms515520 KiB
33Hibás válasz1.103s462616 KiB
34Hibás válasz1.368s888000 KiB