0

solution for https://oj.tlualgosec.com/problem/dayso

đã đăng vào 17, Tháng 7, 2023, 5:20

Gọi ~f[i]~ là hàm mục tiêu của bài toán.

Với mỗi phần thứ j ta xét 2 phần tử i và k. Nhận thấy: $$f(i,j,k)=a_i + 2a_j + 3a_k$$ Nên chúng ta cần tìm ~a[i]~ và ~a[j]~ sao cho ~a[i] + a[j]~ là lớn nhất có thể. Mà ~a[i]~ và ~a[j]~ là rời rạc nên việc tìm ~a[i] + a[j]~ sao cho chúng lớn nhất tương đương với việc tìm ~a[i]~ lớn nhất và ~a[j]~ lớn nhất.

Gọi ~h[i]~ là giá trị lớn nhất từ ~i = 1 \rightarrow i~ của ~a[i]~. Ta có thể tính được ~h[i]~ $$ \begin{cases} h[1] = a[1] \\ h[i] = max(h[i-1], a[i]) ~~~ \text{if} \ \ i \geq 2 \end{cases} $$

Gọi ~g[i]~ là giá trị lớn nhất từ ~i=n \rightarrow i~ của a[i]. Tương tự ta tính được ~g[i]~ $$ \begin{cases} g[n] = a[n] \\ g[i] = max(g[i+1], a[i]) ~~~ \text{if} \ \ i \leq n-1 \end{cases} $$

Sau khi tính được ~h[i]~ và ~g[i]~, ta tính được f[i]: $$ f[i] = \max(f[i-1], h[i-1] + 2a[i] + 3g[i+1]) ~~~ \forall i=2,3,\dots,n-1 $$


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.