Viết tắt

Đề bài

Mô tả

Cho một văn bản gồm n từ được ngăn cách bởi đúng một dấu cách. Không có dấu cách trước từ đầu tiên và sau từ cuối cùng. Mọi từ chỉ gồm các chữ cái Latin thường. Độ dài của văn bản là tổng số chữ cái và dấu cách trong đó.

Ký hiệu wi là từ thứ i của văn bản, và w[i..j] là đoạn từ liên tiếp wi,wi+1,,wj. Hai đoạn w[i1..j1]w[i2..j2] được gọi là bằng nhau nếu chúng có cùng số từ (j1i1=j2i2) và các từ tương ứng trùng nhau, tức wi1+t=wi2+t với mọi t[0,j1i1].

Một phép viết tắt được thực hiện như sau: chọn ít nhất hai đoạn từ bằng nhau và đôi một không giao nhau, rồi thay mỗi đoạn đã chọn bằng xâu gồm các chữ cái đầu của những từ trong đoạn, viết hoa.

Ví dụ, với văn bản "a ab a a b ab a a b c" ta có thể thay hai đoạn w[2..4]w[6..8] bằng "AAA" để được "a AAA b AAA b c", hoặc thay hai đoạn w[2..5]w[6..9] bằng "AAAB" để được "a AAAB AAAB c".

Hãy tìm độ dài nhỏ nhất của văn bản sau khi thực hiện nhiều nhất một phép viết tắt (tức là được phép không viết tắt gì cả).

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số từ của văn bản.
  • Dòng thứ hai chứa n từ w1,w2,,wn cách nhau bởi một dấu cách, mỗi từ chỉ gồm chữ cái Latin thường.

Dữ liệu ra

In ra một số nguyên duy nhất là độ dài nhỏ nhất của văn bản sau khi thực hiện nhiều nhất một phép viết tắt.

Ràng buộc

  • 1n300
  • Độ dài của văn bản ban đầu không vượt quá 105.

Ví dụ

Input Output Giải thích
6
to be or not to be
12 Thay hai đoạn w[1..2]w[5..6] (đều là "to be") để được "TB or not TB", độ dài 12.
10
a ab a a b ab a a b c
13 Thay w[2..5]w[6..9] (đều là "ab a a b") để được "a AAAB AAAB c", độ dài 13.
6
aa bb aa aa bb bb
11 Thay w[1..2]w[4..5] (đều là "aa bb") để được "AB aa AB bb", độ dài 11. Chọn đoạn dài hơn không có lợi vì không tìm được hai đoạn bằng nhau rời nhau.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 csc 6.12.0.200 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 kotlinc 2.4.10 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0