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

Dãy Con Dày Đặc

Đề bài

Mô tả

Cho một xâu s gồm các chữ cái Latin thường và một số nguyên m.

Bạn cần chọn một tập các vị trí trong xâu sao cho: với mọi đoạn con liên tiếp có độ dài m của xâu, tồn tại ít nhất một vị trí được chọn nằm trong đoạn đó. Nói cách khác, chọn dãy chỉ số 1i1<i2<<it|s| sao cho với mọi j thỏa 1j|s|m+1, tồn tại một chỉ số được chọn ik với jikj+m1.

Sau đó lấy các ký tự tại những vị trí đã chọn và sắp xếp lại theo thứ tự tùy ý để tạo thành một xâu mới. Tất cả các ký tự tại các vị trí đã chọn đều phải được dùng.

Hãy tìm xâu có thứ tự từ điển nhỏ nhất có thể tạo ra theo cách trên.

Dữ liệu vào

  • Dòng đầu chứa số nguyên m.
  • Dòng thứ hai chứa xâu s gồm các chữ cái Latin thường.

Dữ liệu ra

  • In ra một dòng duy nhất là xâu có thứ tự từ điển nhỏ nhất tạo được.

Ràng buộc

  • 1m|s|105

Ví dụ

Input Output Giải thích
3
cbabc
a Chọn vị trí thứ 3 (ký tự 'a'). Vị trí này nằm trong cả 3 đoạn độ dài 3, nên xâu kết quả chỉ gồm một ký tự 'a'.
2
abcab
aab Chọn các vị trí 1, 2, 4 (các ký tự 'a', 'b', 'a'), sắp xếp lại thành "aab".
3
bcabcbaccba
aaabb Lấy tất cả các ký tự 'a' và thêm số ít nhất các ký tự 'b' cần thiết để phủ hết các đoạ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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0