Hướng dẫn bài POLE - Cột điện

Trùm CUỐI 2020-05-06 7:03:39 2020-05-07 2:45:39

Subtask 1:

Sử dụng duyệt chọn các giá trị từng cột. Độ phức tạp O(3^n)

Subtask 2:

Gọi F[i][x] là chi phí tối thiểu của i cột đầu tiên nếu cột i có chiều cao x .

Tính: F[i][x]=min⁡F[i-1][k]+c×|x-k|+(x-h_i )^2 với k≥h_i .

Đáp số: min⁡F[n][x] .

Độ phức tạp: O(n×h^2) .

Subtask 3.:

Nhận thấy

  • F[i][x]=(F[i-1][k]+c\times k)-c\times x+(x-h_i )^2 với k>x
  • F[i][x]=(F[i-1][k]-c\times k)+c\times x+(x-h_i )^2 với k≤x

Đặt:

Low[i-1][x]=min(F[i-1][k]-c\times k) với k<x

High[i-1][x]=min⁡((F[i-1][k]+c\times k) với k≥x

Ta có thể tính: Low[i][x]=min⁡(Low[i][x-1],F[i][x]-c\times x) . Tương tự với High[i][x] . Việc tính toán 2 mảng Low,High thực hiện trong O(n×hmax)

Khi đó: F[i][x]=min⁡(Low[i-1][x]+c\times x,High[i-1][x]-c\times x)+(x-h_i )^2

Độ phức tạp: O(n×hmax)

Tổng cộng 1 trả lời

vu thi thanh hoa