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

Xâu nhỏ nhất

Đề bài

Mô tả

Cho một xâu s chỉ gồm hai loại ký tự ab.

Ta xét lần lượt tất cả các tiền tố của s có độ dài từ 1 đến |s|, theo thứ tự từ ngắn nhất đến dài nhất. Với mỗi tiền tố, ta được phép đảo ngược tiền tố đó hoặc giữ nguyên. Các quyết định được thực hiện tuần tự: xử lý xong tiền tố độ dài i mới chuyển sang tiền tố độ dài i+1, và mọi thao tác đảo ngược sau đó tác động lên xâu đã bị biến đổi bởi các thao tác trước.

Hãy chọn tập các tiền tố cần đảo ngược sao cho xâu thu được sau khi xét hết tất cả tiền tố là nhỏ nhất theo thứ tự từ điển.

Dữ liệu vào

Một dòng duy nhất chứa xâu s chỉ gồm các ký tự ab.

Dữ liệu ra

In ra đúng |s| số nguyên. Số thứ i bằng 1 nếu cần đảo ngược tiền tố độ dài i (đoạn từ vị trí 1 đến i), và bằng 0 nếu ngược lại.

Nếu có nhiều cách cho ra kết quả tối ưu, in ra một cách bất kỳ.

Ràng buộc

  • 1|s|1000
  • s chỉ gồm các ký tự ab.

Ví dụ

Input Output Giải thích
bbab 0 1 1 0 Đảo ngược tiền tố độ dài 2 rồi độ dài 3 sẽ biến bbab thành abbb — đây là xâu nhỏ nhất có thể tạo được từ các ký tự của bbab.
aaaaa 0 0 0 0 1 Mọi ký tự đều là a, nên đảo ngược tập tiền tố nào cũng cho ra aaaaa. Nhiều đáp án khác cũng được chấp nhậ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