Mật độ xuất hiện cao (HSG9-2023, Nghệ An)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: MATDO.INP Output: MATDO.OUT

Trò chơi chọn bóng mà nhóm của Tuấn thiết kế được bạn bè và giáo viên trong trường đánh giá rất cao. Sau thành công này, Tuấn cùng nhóm bạn tập trung học tập để thi vào lớp chuyên tin của một trường chuyên danh giá trong tỉnh. Những bài tập mà Tuấn làm đều yêu cầu kỹ năng thiết kế thuật toán chuyên nghiệp. Một trong các bài tập mà bạn ấy đang xây dựng thuật toán có nội dung như sau:

Cho chuỗi kí tự \(S\) chỉ gồm các kí tự chữ cái latinh thường từ a,...,z. Một chuỗi con \(X\) (gồm các kí tự ở vị trí liên tiếp) của \(S\) được gọi là một chuỗi có mật độ xuất hiện cao nếu trong chuỗi \(X\) có một kí tự mà số lần xuất hiện của kí tự đó nhiều hơn số các kí tự còn lại trong chuỗi \(X\).
Ví dụ: chuỗi \(S =\) abbbabced, chuỗi con \(X =\) abbbabc là một chuỗi có mật độ xuất hiện cao, vì có kí tự b xuất hiện 4 lần, số các kí tự còn lại là 3. Nếu \(X =\) abbbabce, kí tự xuất hiện nhiều lần nhất 4 lần (ki tự b) và số kí tự còn lại là 4. Do vậy chuỗi \(X=\)abbbabce không phải là một chuỗi có mật độ xuất hiện cao.

Yêu cầu: Tìm một chuỗi con \(X\) (gồm các kí tự ở vị trí liên tiếp) của \(S\) là một chuỗi có mật độ xuất hiện cao và độ dài lớn nhất.

Tuấn cũng đã có thuật toán của mình, còn bạn thì sao? Hãy lập trình giải bài toán trên để đối chiếu kết quả nhé.

Input: Dữ liệu cho trong tệp văn bản MATDO.INP gồm một chuỗi kí tự \(S\) chỉ gồm các kí tự chữ cái latinh thường và có độ dài không lớn hơn 2 × 105.

Output: Kết quả ghi ra tệp văn bản MATDO.OUT gồm một số nguyên duy nhất là số điểm lớn nhất người chơi có thể nhận được.

Scoring

  • Có 20% số test ứng với 20% số điểm thỏa mãn \(2 ≤ n ≤ 2000\); \(k = 2\).
  • Có 30% số test ứng với 30% số điểm thỏa mãn \(3 ≤ n ≤ 2000; k = 3\).
  • Có 30% số test ứng với 30% số điểm thỏa mãn \(4 ≤ n ≤ 2000; 3< k \le n\)
  • Có 20% số test ứng với 20% số điểm thỏa mãn \(2000<n≤2 \times 10^5;3<k \le n\)

Example

Test 1

Input
abbbabced
Output
7
Note
  • Ta có thể chọn chuỗi \(X\) thỏa mãn là: \(X=abbbabc\) hoặc \(X=bbbabce\)

Test 2

Input
ababab
Output
5
Note
  • Ta có thể chọn chuỗi \(X\) thỏa mãn là:
    • \(X=ababa\) vì kí tự a xuất hiện 3 lần, số các ký tự còn lại là 2
    • \(X=babab\) vì kí tự b xuất hiện 3 lần, số các ký tự còn lại là 2

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.