Xâu họ hàng
Xem dạng PDF
Gửi bài giải
Điểm:
100,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python, Rust
Hai xâu kí tự ~X~ và ~Y~ được gọi là hai xâu họ hàng nếu mỗi kí tự có ở xâu này đều có ở xâu kia và ngược lại. Hai xâu rỗng cũng được xem là hai xâu họ hàng.
Ví dụ: ~X =~ aabccdcbe và ~Y =~ abcde là hai xâu họ hàng.
Cho hai xâu kí tự ~S_1~ và ~S_2~ chỉ gồm các chữ cái in thường từ a đến z. Để biến hai xâu này thành xâu họ hàng, bạn được phép thực hiện hai thao tác sau với số lần tùy ý (có thể không thực hiện):
- Xóa một kí tự bất kỳ khỏi ~S_1~ hoặc ~S_2~. Chi phí cho mỗi lần xóa là ~A~.
- Chèn thêm một kí tự bất kỳ (từ
ađếnz) vào một vị trí bất kỳ trong ~S_1~ hoặc ~S_2~. Chi phí cho mỗi lần chèn là ~B~.
Yêu cầu: Hãy tính tổng chi phí ít nhất cần bỏ ra để biến ~S_1~ và ~S_2~ thành hai xâu họ hàng.
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên dương ~A~ và ~B~ ~(1 \le A, B \le 10^9)~ lần lượt là chi phí cho một lần xóa và một lần chèn.
- Dòng thứ hai chứa xâu kí tự ~S_1~.
- Dòng thứ ba chứa xâu kí tự ~S_2~.
- Dữ liệu đảm bảo độ dài mỗi xâu không vượt quá ~10^6~ kí tự và chỉ chứa các chữ cái in thường.
Kết quả
- In ra một số nguyên duy nhất là tổng chi phí tối thiểu để hai xâu trở thành xâu họ hàng.
Ví dụ
Input
5 2
aabbcc
ab
Output
2
Giải thích: ~S_1~ có chứa kí tự c trong khi ~S_2~ thì không. Cách tốn ít chi phí nhất là thực hiện 1 thao tác: chèn thêm kí tự c vào xâu ~S_2~. Tổng chi phí là ~2~.
Giới hạn
- ~1 \le A, B \le 10^9~.
- ~|S_1|, |S_2| \le 10^6~ (trong đó ~|S_1|, |S_2|~ lần lượt là độ dài của xâu ~S_1~ và ~S_2~).
Subtask:
- Có 40% số test tương ứng với 40% số điểm có ~|S_1|, |S_2| \le 10^3~.
- Có 40% số test tương ứng với 40% số điểm có ~A = 1, B = 10^9~.
- Có 20% số test tương ứng với 20% số điểm không có giới hạn gì thêm.
Đang tải...