Phoenix va phan phoi chu cai
Đề bài
Mô tả
Cho một xâu gồm chữ cái Latin thường. Bạn cần chia tất cả các chữ cái của vào xâu khác rỗng sao cho mỗi chữ cái của thuộc đúng một xâu . Các xâu không cần là xâu con của : bạn được phép phân phối các chữ cái và sắp xếp lại thứ tự các chữ cái bên trong mỗi xâu tuỳ ý.
Trong tất cả các cách chia hợp lệ, hãy tìm cách làm cho xâu lớn nhất theo thứ tự từ điển trong số là nhỏ nhất có thể. In ra giá trị nhỏ nhất đó của .
Xâu nhỏ hơn xâu theo thứ tự từ điển nếu là tiền tố thực sự của , hoặc tại vị trí đầu tiên mà chúng khác nhau, chữ cái của nhỏ hơn chữ cái của .
Dữ liệu vào
- Dòng đầu chứa số nguyên là số bộ dữ liệu.
- Mỗi bộ 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 gồm các chữ cái Latin thường.
Dữ liệu ra
In dòng, mỗi dòng là đáp án của một bộ dữ liệu: giá trị nhỏ nhất có thể của .
Ràng buộc
- Tổng của trên tất cả các bộ dữ liệu không vượt quá .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 4 2 baba 5 2 baacb 5 3 baacb 5 3 aaaaa 6 4 aaxxzz 7 1 phoenix |
ab abbc b aa x ehinopx |
Bộ 1: chia baba thành ab và ab, lớn nhất là ab. Bộ 2: chia baacb thành abbc và a. Bộ 3: chia baacb thành ac, ab, b. Bộ 5: chia aaxxzz thành az, az, x, x. Bộ 6: chỉ một xâu, sắp xếp lại thành ehinopx. |
| 1 6 3 aaabbc |
abbc | Ba xâu đều bắt đầu bằng a. Phần còn lại bbc không toàn ký tự giống nhau nên dồn hết vào một xâu: abbc, a, a; lớn nhất là abbc. |
Bình luận