trang chủ / bài tập / restostr

Khôi phục xâu

Đề bài

Mô tả

Một xâu con của một xâu là một dãy các ký tự liên tiếp của xâu đó. Ví dụ "ab", "c", "abc" là các xâu con của "abc", còn "ac" thì không.

Số lần xuất hiện của một xâu con trong một xâu là số vị trí bắt đầu mà xâu con đó xuất hiện. Các lần xuất hiện có thể chồng lấn lên nhau.

Một xâu con của xâu T được gọi là xuất hiện nhiều nhất nếu số lần xuất hiện của nó trong T không nhỏ hơn số lần xuất hiện của bất kỳ xâu con nào khác của T.

Cho một tập gồm n xâu đôi một khác nhau. Xâu T (không nhất thiết thuộc tập) được gọi là tốt nếu mọi phần tử của tập đều là xâu con xuất hiện nhiều nhất của T.

Hãy tìm xâu tốt khác rỗng có độ dài nhỏ nhất. Nếu có nhiều xâu như vậy, hãy in ra xâu nhỏ nhất theo thứ tự từ điển. Nếu không tồn tại xâu tốt nào, in ra NO.

Xâu a nhỏ hơn xâu b theo thứ tự từ điển nếu a là tiền tố của b, hoặc tại vị trí đầu tiên mà ab khác nhau thì a có ký tự nhỏ hơn.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số xâu trong tập.
  • n dòng tiếp theo, mỗi dòng chứa một xâu khác rỗng gồm các chữ cái Latin thường. Các xâu đôi một khác nhau.

Dữ liệu ra

In ra xâu tốt khác rỗng có độ dài nhỏ nhất; nếu có nhiều xâu thì in xâu nhỏ nhất theo thứ tự từ điển. In ra NO nếu không tồn tại xâu tốt.

Ràng buộc

  • 1n105
  • Tổng độ dài các xâu không vượt quá 105.

Ví dụ

Input Output Giải thích
4
mail
ai
lru
cf
cfmailru Trong "cfmailru" mọi ký tự đều xuất hiện đúng 1 lần, nên số lần xuất hiện lớn nhất của một xâu con là 1, và cả 4 xâu đã cho đều xuất hiện đúng 1 lần. Chỉ có hai xâu tốt độ dài nhỏ nhất là "cfmailru" và "mailrucf"; xâu đầu nhỏ hơn theo thứ tự từ điển.
3
kek
preceq
cheburek
NO Xâu "kek" chứa chữ 'k' hai lần, nên trong mọi xâu T chứa "kek" thì 'k' xuất hiện ít nhất 2 lần, nhiều hơn số lần xuất hiện của "kek". Do đó "kek" không thể là xâu con xuất hiện nhiều nhất.
2
az
zb
azb Ghép hai xâu tại ký tự chung 'z'. Ba chữ cái a, z, b mỗi chữ xuất hiện 1 lần, "az" và "zb" cũng xuất hiện 1 lần.

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 dotnet 10.0.400 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 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 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 swipl 9.0.4 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 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0