Chặt cây

View as PDF

Submit solution


Points: 0.23 (partial)
Time limit: 0.38s
Memory limit: 512M
Input: stdin
Output: stdout

Problem type
Allowed languages
C, C++, Java, Kotlin, Pascal, PyPy, Python, 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

Comments

Please read the guidelines before commenting.


There are no comments at the moment.