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

Chia Mảng Knuth

Đề bài

Mô tả

Cho mảng n số nguyên. Ban đầu cả mảng là một đoạn duy nhất. Mỗi bước, bạn chọn một đoạn và chia nó thành hai đoạn liên tiếp. Chi phí của một lần chia đoạn bằng tổng tất cả các phần tử trong đoạn đó. Mục tiêu là chia mảng thành n đoạn đơn (mỗi đoạn gồm một phần tử) với tổng chi phí nhỏ nhất.

Dữ liệu vào

  • Dòng 1: số nguyên n.
  • Dòng 2: n số nguyên x1,x2,,xn.

Dữ liệu ra

  • Một số nguyên: tổng chi phí nhỏ nhất.

Ràng buộc

  • 1n5000
  • 1xi109

Ví dụ

Input Output Giải thích
5
2 7 3 2 5
43 Chia [2,7,3,2,5] (tổng 19) sau phần tử thứ 2, được [2,7] và [3,2,5]: chi phí 19. Chia [2,7] (tổng 9): chi phí 9. Chia [3,2,5] (tổng 10) sau phần tử thứ 2, được [3,2] và [5]: chi phí 10. Chia [3,2] (tổng 5): chi phí 5. Tổng = 19+9+10+5 = 43, và đây là cách rẻ nhất.
4
3 1 2 4
19 Chia [3,1,2,4] (tổng 10) sau phần tử thứ 3, được [3,1,2] và [4]: chi phí 10. Chia [3,1,2] (tổng 6) sau phần tử thứ 1, được [3] và [1,2]: chi phí 6. Chia [1,2] (tổng 3): chi phí 3. Tổng = 10+6+3 = 19. Chia đôi ở giữa cho kết quả 10+4+6 = 20, tức là tệ hơn.
1
5
0 Chỉ một phần tử, không cần chia.

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