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

Tối tiểu hóa xâu nhị phân

Đề bài

Mô tả

Cho một xâu nhị phân độ dài n (chỉ gồm các ký tự '0' và '1').

Trong một bước, bạn được phép hoán đổi hai ký tự kề nhau của xâu. Hỏi xâu nhỏ nhất theo thứ tự từ điển mà bạn có thể thu được nếu thực hiện không quá k bước? Bạn có thể không thực hiện bước nào nếu muốn.

Lưu ý rằng bạn có thể hoán đổi cùng một cặp ký tự kề nhau (ở vị trí ii+1) nhiều lần tùy ý, và mỗi lần hoán đổi được tính là một bước riêng biệt.

Bạn phải trả lời q truy vấn độc lập nhau.

Dữ liệu vào

  • Dòng đầu tiên chứa một số nguyên q — số lượng truy vấn.
  • Với mỗi truy vấn:
    • Dòng đầu chứa hai số nguyên nk — độ dài xâu và số bước tối đa được phép thực hiện.
    • Dòng thứ hai chứa xâu nhị phân độ dài n.

Dữ liệu ra

Với mỗi truy vấn, in ra trên một dòng xâu nhỏ nhất theo thứ tự từ điển thu được sau khi thực hiện không quá k bước.

Ràng buộc

  • 1q104
  • 1n106
  • 1kn2
  • Tổng n trên tất cả các truy vấn không vượt quá 106.

Ví dụ

Input Output Giải thích
3
8 5
11011010
7 9
1111100
7 11
1111100
01011110
0101111
0011111
Truy vấn 1: một cách biến đổi là 11011010 → 10111010 → 01111010 → 01110110 → 01101110 → 01011110. Truy vấn 3: đủ số bước để sắp xếp xâu hoàn toàn tăng dần.
1
2 1
00
00 Xâu đã ở dạng nhỏ nhất, không cần biến đổi.

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