trang chủ / đề bài / seabattle

Trận chiến trên biển

Đề bài

Mô tả

Trên một lưới 1×n có đặt a chiếc tàu, mỗi tàu chiếm đúng b ô liên tiếp. Không ô nào thuộc hai tàu cùng lúc, nhưng các tàu có thể nằm sát cạnh nhau. Người chơi không biết vị trí các tàu.

Người chơi bắn vào một số ô: sau mỗi phát bắn cô ấy được cho biết ô đó có thuộc một chiếc tàu nào không (trúng) hay không (trượt).

Người chơi đã bắn k phát và toàn bộ đều trượt. Các ô đã bắn được đánh dấu bằng ký tự 1 trong xâu mô tả lưới.

Hãy tìm số ô ít nhất mà nếu bắn vào tất cả các ô đó thì chắc chắn trúng ít nhất một chiếc tàu, với mọi cách bố trí tàu hợp lệ (nghĩa là mọi cách đặt a tàu độ dài b không đè lên nhau và không đặt lên ô đã bắn trượt). Dữ liệu đảm bảo tồn tại ít nhất một cách bố trí tàu hợp lệ.

Dữ liệu vào

  • Dòng đầu chứa bốn số nguyên dương n, a, b, k: độ dài lưới, số tàu, độ dài mỗi tàu, và số phát đã bắn.
  • Dòng thứ hai chứa một xâu độ dài n gồm các ký tự 0 và 1. Ký tự thứ i bằng 1 nếu ô i đã bị bắn (trượt), bằng 0 nếu chưa. Xâu có đúng k ký tự 1.

Dữ liệu ra

  • Dòng đầu in ra số ô ít nhất cần bắn.
  • Dòng thứ hai in ra chỉ số các ô đó (đánh số từ 1 đến n từ trái sang phải), mỗi ô đúng một lần, theo thứ tự tùy ý.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1≤n≤2·105
  • 1≤a,b≤n
  • 0≤k≤n−1

Ví dụ

Input Output Giải thích
5 1 2 1
00100
2
2 5
Có một tàu độ dài 2. Nó có thể nằm ở các ô (1,2) hoặc (4,5). Cần bắn hai ô, một ở phần trái và một ở phần phải, mới chắc chắn trúng.
13 3 2 3
1000000010001
2
3 5
Hai đoạn ô trống là [2,8] (chứa tối đa 3 tàu) và [10,12] (chứa tối đa 1 tàu), tổng 4 vị trí. Có 3 tàu nên chỉ cần bắn 4−3+1=2 ô để chắc chắn trúng một tàu.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0