trang chủ / đề bài / dhbb23_cvahn_11_c

Phân đoạn dãy số

Đề bài

Mô tả

Bạn được tham gia một trò chơi với dãy gồm n số nguyên không âm a1,a2,…,an. Trong trò chơi này, bạn phải chia dãy đã cho thành k+1 đoạn con liên tiếp khác rỗng. Để thu được k+1 đoạn, bạn lặp lại các bước sau đúng k lần:

  1. Chọn một đoạn tùy ý có nhiều hơn một phần tử (ban đầu chỉ có một đoạn, đó chính là toàn bộ dãy).
  2. Chọn một vị trí nào đó giữa hai phần tử liên tiếp của đoạn đã chọn để chia nó thành hai đoạn mới khác rỗng.

Mỗi lần thực hiện xong hai bước này, bạn nhận được số điểm bằng tích của tổng các số trong đoạn mới thứ nhất và tổng các số trong đoạn mới thứ hai.

Yêu cầu: Hãy tìm cách chơi để tổng điểm nhận được sau k lần chia là lớn nhất.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương n và k (k+1≤n≤3000).
  • Dòng thứ hai chứa n số nguyên không âm a1,a2,…,an (0≤ai≤104).

Dữ liệu ra

In ra một số nguyên duy nhất là tổng điểm lớn nhất có thể đạt được.

Ràng buộc

  • 1≤k, k+1≤n≤3000.
  • 0≤ai≤104.
  • 70% số test có n≤300.

Ví dụ

Input Output Giải thích
7 3
1 3 4 0 2 3 4
108 Chia dãy sau phần tử thứ 6: (1+3+4+0+2+3)·4=52 điểm. Chia đoạn (1,3,4,0,2,3) sau phần tử thứ 2: (1+3)·(4+0+2+3)=36 điểm. Chia đoạn (4,0,2,3) sau phần tử thứ 4: (4+0)·(2+3)=20 điểm. Dãy được chia thành (1,3),(4,0),(2,3),(4), tổng điểm 52+36+20=108.
4 2
2 1 1 2
12 Ví dụ bổ sung. Chia sau phần tử thứ 1: 2·4=8 điểm, rồi chia đoạn (1,1,2) sau phần tử thứ 3: (1+1)·2=4 điểm, tổng 12. Nếu lần đầu chia ở giữa (3·3=9 điểm) thì lần sau chỉ được thêm 2 điểm.

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