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

Slava và xe tăng

Đề bài

Mô tả

Bản đồ là một dải ô kích thước 1×n, các ô được đánh số từ 1 đến n. Trong mỗi ô có thể có không, một hoặc nhiều xe tăng. Bạn không biết số lượng xe tăng cũng như vị trí của chúng, nhưng bạn có thể thả bom vào một ô bất kỳ. Khi thả bom vào một ô, tất cả xe tăng đang ở ô đó nhận sát thương.

Quy tắc di chuyển của xe tăng:

  • Khi một xe tăng nhận sát thương lần đầu tiên, nó lập tức di chuyển sang một ô kề bên. Xe tăng ở ô 1 chỉ có thể sang ô 2, xe tăng ở ô n chỉ có thể sang ô n1; xe tăng ở ô trong (2in1) có thể sang ô i1 hoặc ô i+1 (bạn không kiểm soát được hướng di chuyển).
  • Khi một xe tăng nhận sát thương lần thứ hai, nó bị phá hủy và không bao giờ di chuyển nữa.
  • Xe tăng chỉ di chuyển đúng một lần, ngay khi nhận sát thương lần đầu; ngoài ra chúng đứng yên.

Hãy tìm một dãy thả bom sao cho mọi xe tăng đều bị phá hủy, bất kể ban đầu chúng ở đâu, và số quả bom là ít nhất.

Dữ liệu vào

Một dòng duy nhất chứa số nguyên n là kích thước bản đồ.

Dữ liệu ra

Dòng đầu in ra m là số quả bom ít nhất cần dùng.

Dòng thứ hai in ra m số nguyên k1,k2,,km, trong đó ki là ô mà quả bom thứ i được thả xuống (theo đúng thứ tự thả).

Nếu có nhiều đáp án tối ưu, bạn có thể in ra bất kỳ đáp án nào.

Ràng buộc

  • 2n100000

Ví dụ

Input Output Giải thích
2 3
2 1 2
Bom ô 2: xe tăng ở ô 2 dạt sang ô 1. Bom ô 1: xe tăng ở ô 1 (gồm cả xe vừa dạt sang) nhận sát thương, xe gốc ở ô 1 dạt sang ô 2, xe từ ô 2 bị phá hủy. Bom ô 2: phá hủy nốt xe gốc ở ô 1.
3 4
2 1 3 2
Bom ô chẵn (2), rồi ô lẻ (1, 3), rồi lại ô chẵn (2). Mọi xe tăng đều bị đánh trúng đủ hai lầ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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0