Trò chơi giáo dục

Đề bài

Mô tả

Cho một dãy gồm n số nguyên không âm a1,a2,,an.

Một nước đi được thực hiện như sau: chọn một chỉ số i (1in) sao cho ai>0, và một số nguyên t0 sao cho i+2tn. Sau đó giảm ai đi 1 và tăng ai+2t lên 1.

Nói cách khác, mỗi nước đi chuyển một đơn vị từ vị trí i sang vị trí i+2t, với điều kiện vị trí đích không vượt quá n.

Với mỗi k (1k<n), hãy tính số nước đi ít nhất cần thực hiện để a1=a2==ak=0.

Mỗi giá trị k được xét độc lập, luôn bắt đầu từ dãy ban đầu.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra đúng n1 dòng. Dòng thứ k chứa số nước đi ít nhất để k phần tử đầu tiên của dãy ban đầu đều bằng 0.

Ràng buộc

  • 2n300
  • 0ai104

Ví dụ

Input Output Giải thích
8
1 2 3 4 5 6 7 8
1
3
6
10
16
24
40
Với k4, mỗi đơn vị ở vị trí ik đều tới được một vị trí >k bằng đúng một nước đi, nên đáp án là a1++ak. Với k=7, đơn vị ở vị trí 1 phải đi quãng đường 7=4+2+1, tốn 3 nước; còn đơn vị ở vị trí 5 phải đi quãng đường 3=2+1, tốn 2 nước.
4
1 0 1 2
1
1
3
Với k=1: chuyển đơn vị ở vị trí 1 sang vị trí 2 (quãng đường 20), tốn 1 nước. Với k=2: cùng một nước đi đó không đủ, nhưng chuyển thẳng từ vị trí 1 sang vị trí 3 (quãng đường 21) thì cả a1a2 đều bằng 0, vẫn tốn 1 nước. Với k=3: đơn vị ở vị trí 1 cần đi quãng đường 3=2+1 (tốn 2 nước), đơn vị ở vị trí 3 cần 1 nước, tổng cộng 3.

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