Chặt cây

Xem dạng PDF

Gửi bài giải


Điểm: 0,23 (OI)
Giới hạn thời gian: 0.38s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bạn cần chặt một thanh gỗ ra thành n đoạn, mỗi đoạn có độ dài ~a_{i}~ .

Các đoạn được chặt phải có độ dài theo đúng thứ tự ~a_{1}~ , ~a_{2}~ , ..., ~a_{n}~ từ trái sang phải.

Tại mỗi bước, bạn có thể chặt một nhát chia một thanh gỗ làm hai, và chi phí cho nhát chặt này bằng độ dài của thanh gỗ trước khi chặt.

Thứ tự chặt khác nhau sẽ cho ra tổng chi phí khác nhau khi chặt thanh gỗ thành ~n~ đoạn yêu cầu.

Ví dụ: bạn cần chặt một thanh gỗ độ dài ~20~ ra thành ~4~ đoạn độ dài ~3~, ~5~, ~2~ và ~10~ theo thứ tự.

Khi chặt từ trái sang phải:

  • ~20~ chặt thành ~3~ và ~17~, chi phí ~20~.
  • ~17~ chặt thành ~5~ và ~12~, chi phí ~17~.
  • ~12~ chặt thành ~2~ và ~10~, chi phí ~12~.

Tổng chi phí: ~49~

Khi chặt từ phải sang trái:

  • ~20~ chặt thành ~10~ và ~10~, chi phí ~20~.
  • ~10~ chặt thành ~8~ và ~2~, chi phí ~10~.
  • ~8~ chặt thành ~3~ và ~5~, chi phí ~8~.

Tổng chi phí: ~38~

Bạn hãy tìm cách chặt có tổng chi phí nhỏ nhất.

Input

  • Dòng ~1~: ~n~ ~(1 \leq~ ~n \leq~ ~2000)~
  • Dòng ~2~: ~n~ số nguyên dương ~a_{1}~, ~a_{2}~, ..., ~a_{n}~, biết rằng độ dài của thanh gỗ ~a_{1} + a_{2} +~ ...~+ a_{n} \leq~ ~500000~

Output

  • Một số nguyên duy nhất là chi phí nhỏ nhất tìm được.

Sample Input

4
3 5 2 10

Sample Output

37

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.