trang chủ / đề bài / ck01part

Chia đoạn tối ưu

Đề bài

Mô tả

Cho dãy số nguyên a1,a2,…,an và một số nguyên C.

Bạn phải chia dãy thành các đoạn con liên tiếp không rỗng. Số đoạn tuỳ ý, miễn là mỗi phần tử thuộc đúng một đoạn và các đoạn phủ kín dãy theo thứ tự từ trái sang phải.

Chi phí của một đoạn bằng hiệu giữa phần tử lớn nhất và phần tử nhỏ nhất trong đoạn đó, cộng thêm C. Nói cách khác, đoạn [l,r] có chi phí

maxl≤i≤rai−minl≤i≤rai+C.

Hãy tìm tổng chi phí nhỏ nhất của một cách chia.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và C.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

  • In ra một số nguyên duy nhất là tổng chi phí nhỏ nhất.

Ràng buộc

  • 1≤n≤105
  • 0≤C≤1012
  • 1≤ai≤1012

Ví dụ

Input Output Giải thích
5 2
3 1 4 1 5
6 Giữ nguyên một đoạn duy nhất: chi phí 5−1+2=6. Chia thành 5 đoạn một phần tử tốn 5×2=10, chia thành [3,1] và [4,1,5] tốn (2+2)+(4+2)=10.
4 10
1 100 1 100
40 Chia thành 4 đoạn một phần tử: mỗi đoạn chi phí 0+10, tổng bằng 40. Giữ một đoạn duy nhất tốn 99+10=109.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0