Biến đổi xâu nhị phân
Đề bài
Mô tả
Cho hai xâu nhị phân và cùng độ dài , và một danh sách gồm ngày. Vào ngày thứ , đoạn từ vị trí đến vị trí của xâu sẽ bị kiểm tra: nếu đoạn này chứa đồng thời cả ký tự '0' và ký tự '1' thì cuộc kiểm tra thất bại ngay lập tức.
Sau cuộc kiểm tra của ngày thứ , vào đêm thứ , bạn được phép thay đổi giá trị của một số ký tự trong đoạn , nhưng số ký tự bị thay đổi phải ít hơn một nửa độ dài đoạn (tức là thay đổi ít hơn ký tự).
Hỏi có cách thay đổi sao cho tất cả cuộc kiểm tra đều thành công (mỗi đoạn bị kiểm tra đều chỉ gồm toàn '0' hoặc toàn '1' tại thời điểm kiểm tra), và sau đêm thứ xâu trở thành đúng bằng xâu hay không?
Dữ liệu vào
- Dòng đầu chứa số nguyên — số bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa hai số nguyên .
- Dòng thứ hai chứa xâu nhị phân độ dài .
- Dòng thứ ba chứa xâu nhị phân độ dài .
- dòng tiếp theo, dòng thứ chứa hai số nguyên .
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra "YES" nếu có thể thực hiện được, ngược lại in ra "NO".
Ràng buộc
- ,
- Tổng của trên tất cả các bộ dữ liệu không vượt quá ; tổng của cũng không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 1 4 1 0011 0011 1 4 |
NO | Ngay ngày đầu, đoạn của = 0011 chứa cả '0' và '1' nên cuộc kiểm tra thất bại. |
| 1 4 1 0011 0011 4 4 |
YES | Đoạn chỉ gồm ký tự '1' nên kiểm tra thành công. Đêm đó chỉ được đổi ít hơn ký tự, tức không đổi gì, và đã bằng . |
| 1 4 1 1111 0011 1 4 |
NO | Đoạn = 1111 đồng nhất nên kiểm tra thành công, nhưng đêm đó chỉ được đổi tối đa ký tự, không thể biến 1111 thành 0011 (cần đổi ký tự). |
Bình luận