Untitled
#include<bits/stdc++.h> #define ll long long #define endl "\n" using namespace std; template<class T> void printff(vector<T>& v) { for (auto k : v) cout << k << " "; cout << endl; } void SOLVE() { ll n, m, a, b, c; cin >> n >> m >> a >> b >> c; string s, t; cin >> s >> t; vector<vector<ll>> dp(n + 1, vector<ll>(m + 1, -1)); function<ll(int, int)> solve =[&] (int i, int j){ if(i == n) return a * (m - j); if(j == m) return b * (n - i); ll & ret = dp[i][j]; if(ret != -1) return ret; ret = 1e15; if(s[i] == t[j]){ return ret = solve(i + 1, j + 1); }else{ ll option_1 = a + solve(i, j + 1); ll option_2 = b + solve(i + 1, j); ll option_3 = c + solve(i + 1, j + 1); ret = min({option_1, option_2, option_3}); } return ret; }; cout << solve(0, 0) << endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int tc = 1; //cin >> tc; while(tc--) SOLVE(); return 0; }
Leave a Comment