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