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

Giãn Cách Chỗ Ngồi

Đề bài

Mô tả

Một nhà hàng có n bàn xếp thành một hàng thẳng, đánh số từ 1 đến n theo thứ tự từ trái sang phải. Một số bàn đã có người ngồi.

Nội quy nhà hàng yêu cầu hai người bất kỳ không được ngồi cách nhau một khoảng nhỏ hơn hoặc bằng k. Nói cách khác, nếu một người ngồi ở bàn i thì mọi bàn có số hiệu từ ik đến i+k (trừ chính bàn i) đều phải trống. Tương đương: hiệu số hiệu của hai bàn có người bất kỳ phải lớn hơn k (lớn hơn thực sự).

Trạng thái hiện tại của nhà hàng được cho bằng một xâu nhị phân s độ dài n, trong đó ký tự "1" nghĩa là bàn đó đã có người và "0" nghĩa là bàn trống. Xâu s được đảm bảo đã thỏa mãn nội quy.

Hãy tìm số lượng bàn trống nhiều nhất có thể có thêm người ngồi vào mà vẫn không vi phạm nội quy. Nói cách khác, có thể đổi nhiều nhất bao nhiêu ký tự "0" thành "1" sao cho điều kiện vẫn được giữ nguyên?

Dữ liệu vào

  • Dòng đầu chứa số nguyên t: số lượng bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa hai số nguyên nk.
    • Dòng thứ hai chứa xâu nhị phân s độ dài n gồm các ký tự "0" và "1", thỏa mãn nội quy (hiệu số hiệu của hai bàn có người bất kỳ đều lớn hơn k).

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số nguyên: số bàn nhiều nhất có thể thêm người ngồi vào. Nếu không thể thêm bàn nào, in ra 0.

Ràng buộc

  • 1t104
  • 1kn2·105
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105.

Ví dụ

Input Output Giải thích
6
6 1
100010
6 2
000000
5 1
10101
3 1
001
2 2
00
1 1
0
1
2
0
1
1
1
Bộ 1: chỉ có thể thêm bàn ở vị trí 3. Bộ 2: chọn bàn 1 và bàn 6. Bộ 3: không thể thêm bàn nào. Bộ 5: k=2 nhưng vẫn thêm được 1 bàn (chỉ cần 1 người).
1
13 5
0000000000000
3 Đặt người tại các bàn 1, 7, 13, khoảng cách giữa hai bàn liên tiếp đều bằng 6 > 5.

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 1.26.3 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