Thay thế một phần
Đề bài
Mô tả
Cho số nguyên và một xâu độ dài chỉ gồm hai ký tự '.' và ''. Bạn cần thay một số ký tự '' thành 'x' sao cho thoả mãn tất cả các điều kiện sau:
- Ký tự '*' đầu tiên trong phải được thay thành 'x'.
- Ký tự '*' cuối cùng trong phải được thay thành 'x'.
- Khoảng cách giữa hai ký tự 'x' liền kề không được vượt quá . Cụ thể, nếu bạn thay hai vị trí và (với ) thành 'x' và trong đoạn không còn ký tự 'x' nào khác, thì phải không vượt quá .
Hãy tìm số lượng ít nhất các ký tự '*' cần thay thành 'x' để thoả mãn các điều kiện trên.
Dữ liệu vào
- Dòng đầu chứa số nguyên : số bộ dữ liệu.
- Mỗi bộ dữ liệu gồm hai dòng:
- Dòng thứ nhất chứa hai số nguyên và .
- Dòng thứ hai chứa xâu độ dài chỉ gồm các ký tự '.' và '*'.
Dữ liệu bảo đảm trong có ít nhất một ký tự '', và khoảng cách giữa hai ký tự '' liền kề bất kỳ không vượt quá .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra trên một dòng số lượng ít nhất các ký tự '*' cần thay thành 'x'.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 7 3 .**.*** 5 1 ..*.. 5 2 *.*.* 3 2 *.* 1 1 * |
3 1 3 2 1 |
Bộ 1: một cách tối ưu là .xx.xxx (thay 3 ký tự). Bộ 2: chỉ có một '*' nên chỉ cần thay 1. Bộ 3: cần thay cả 3 vị trí vì . |
| 3 5 4 ***** 5 2 ***** 10 3 ********** |
2 3 4 |
Với lớn, ta có thể bỏ qua bớt các '*' ở giữa: bộ 1 chỉ cần thay vị trí đầu và cuối (khoảng cách 4 ). |
Bình luận