#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 |