Thứ Năm, 16 tháng 6, 2016

OPTCUT

Bạn cần chặt một thanh gỗ ra thành n đoạn, mỗi đoạn có độ dài ai. Các đoạn được chặt phải có độ dài theo đúng thứ tự a1, a2, ..., an 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.
Dữ liệu vào:
+ Dòng 1: n (1 ≤ n ≤ 2000)
+ Dòng 2: n số nguyên dương a1, a2, ..., an, biết rằng độ dài của thanh gỗ a1+a2+...+an ≤ 500000
Dữ liệu ra: Một số nguyên duy nhất là chi phí nhỏ nhất tìm được.
Ví dụ:
INPUT
OUTPUT
4
3 5 2 10
37


Treats for the Cows



FJ muốn bán N miếng bánh làm từ sữa các con bò. (1≤N≤2000). FJ bãn mỗi ngày một miếng bánh và muốn nhận được số tiền lớn nhất từ việc bán những cái bánh đó trong một khoảng thời gian có hạn. Mỗi miếng bánh có giá trị cao nhờ nhiều nguyên nhân:
+ các miếng bánh được xếp trong một băng dài được đánh số từ 1 đến N. Mỗi ngày FJ có thể lấy 1 miếng bánh ở đầu này hoặc đầu kia của băng đó.
+ Cũng giống như rượu và  pho-mat, các miếng bánh có tuổi thọ càng cao thì càng có giá trị.
+ Giá trị của miếng bánh cũng không cố định. Miếng bánh thứ i có giá trị Vi (1≤Vi≤1000) nếu như miếng bánh đó được bán vào ngày 1.
+ Mỗi chiếc bánh có giá trị phụ thuộc vào tuổi của nó. Mỗi miếng bánh sẽ nhận được a*Vi giá trị với chiếc bánh thứ i có a tuổi.
Yêu cầu: Cho các giá trị Vi. Hãy tìm giá trị lớn nhất Fj có thể nhận được từ việc bán những chiếc bánh.
Chiếc bánh đầu tiên có tuổi là 1, các miếng bánh được bán sau sẽ có tuổi nhiều hơn miếng bánh bán trước là 1.
Dữ liệu vào:
+ Dòng đầu tiên là số nguyên dương N
+ N dòng sau, dòng thứ i là số nguyên Vi
Dữ liệu ra: Một số nguyên duy nhất là giá trị lớn nhất mà FJ thu được
Ví dụ:
INPUT
OUTPUT
5
1
3
1
5
2
43