Bedao OI Contest 1 - Nén tối ưu

Xem dạng PDF

Gửi bài giải


Điểm: 0,70 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: compstr.inp
Output: compstr.out

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một xâu ~s~, ta gọi một phép nén xâu ~s~ là việc thực hiện các thao tác sau:

  • Tìm xâu ~t~ thỏa mãn có thể tạo ra ~s~ bằng cách lặp lại ~t~ một số lần

  • Tìm số ~c~ thỏa mãn để tạo ra xâu ~s~ cần viết liên tiếp ~c~ lần xâu ~t~

  • Khi đó, xâu ~p=c+t~ là xâu nén của ~s~

Ví dụ: ~p(~"ababab"~)=~"3ab", ~p(~"aaaaaaaaaaaa"~)=~"6aa" hoặc "12a", ~p(~"abc"~)=~"1abc".

Với ~|s|~ là kích thước của xâu ~s~

Yêu cầu: Hãy chia xâu ~s~ thành các xâu con liên tiếp ~s_1,s_2,...,s_k~ và nén chúng sao cho tổng độ dài các xâu sau khi nén các xâu là bé nhất

Input

Dữ liệu vào từ file văn bản compstr.inp

Một dòng duy nhất chứa xâu kí tự ~s~ (~|s|\le 5000~). Dữ liệu đảm bảo xâu ~s~ chỉ gồm các chữ cái tiếng Anh in thường.

Output

Kết quả in ra file văn bản compstr.out

In ra một số nguyên duy nhất là tổng độ dài các xâu nén trong phương án tìm được.

Scoring

Subtask Điểm Giới hạn
1 ~20~ ~|s| \le 100~
2 ~30~ ~|s| \le 500~
3 ~50~ Không có ràng buộc gì thêm

Sample Input 1

ababbbbaba

Sample Output 1

8

Sample Input 2

ttuxtuxtxtaba

Sample Output 2

12

Notes

Ở ví dụ thứ nhất, xâu ~s~ được chia thành ~3~ xâu con liên tiếp: "abab", "bb""baba"

  • ~p~("abab") = "2ab"

  • ~p~("bb") = "2b"

  • ~p~("baba") = "2ba"

Tổng độ dài các xâu con sau khi nén bằng ~8~.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.