13.A3. CTDL> bài Chuỗi phân tách
Chuỗi phân tách
Trong một dự án quản lý đô thị mới, FullHouse Dev được giao nhiệm vụ phân tích các mã định danh đặc biệt. Họ cần xác định xem một chuỗi có thể được coi là "chuỗi phân tách" hay không. Với sự tập trung cao độ, nhóm bắt đầu nghiên cứu vấn đề này.
Bài toán
FullHouse Dev nhận được một chuỗi \(S\). Một chuỗi được gọi là chuỗi phân tách nếu nó thỏa mãn cả hai điều kiện sau:
- Có thể chia chuỗi thành \(K\) chuỗi con liên tiếp sao cho ký tự đầu tiên của các chuỗi con này giống nhau.
- Có thể chia chuỗi thành \(K\) chuỗi con liên tiếp sao cho ký tự đầu tiên của các chuỗi con này khác nhau.
Nhiệm vụ của nhóm là xác định xem \(S\) có phải là chuỗi phân tách hay không.
INPUT FORMAT:
- Dòng đầu tiên chứa số nguyên \(T\) - số lượng test case.
- Dòng đầu tiên của mỗi test case chứa hai số nguyên \(N\) và \(K\).
- Dòng thứ hai của mỗi test case chứa một chuỗi \(S\) gồm \(N\) ký tự chữ cái tiếng Anh viết thường.
OUTPUT FORMAT:
- Với mỗi test case, in ra "YES" nếu \(S\) là chuỗi phân tách, ngược lại in ra "NO".
Ràng buộc:
- \(1 \leq T \leq 10^5\)
- \(1 \leq N \leq 10^5\)
- \(1 \leq K \leq N\)
- \(S\) chỉ chứa các ký tự chữ cái tiếng Anh viết thường.
Ví dụ
INPUT
2
3 4
xyz
5 3
abaca
OUTPUT
NO
YES
Giải thích
- Ở test case đầu tiên: Có thể chứng minh rằng chuỗi "xyz" không thể thỏa mãn cả hai điều kiện. Do đó, kết quả là NO.
- Ở test case thứ hai:
- Có thể chia thành "a", "ba", "ca", ký tự đầu tiên của các chuỗi con đều giống nhau.
- Có thể chia thành "ab", "ac", "a", ký tự đầu tiên của các chuỗi con đều khác nhau. Do đó, kết quả là YES.
Comments