trang chủ / đề bài / dhbb23_cls_10_b

SEQPART

Đề bài

Mô tả

Hôm nay là buổi học đầu tiên trong kỳ quân sự của Bình và Tuấn. Vì biết hai bạn này từng học chuyên Tin nên thầy đại đội trưởng đã ra yêu cầu cho hai bạn như sau:

Cho danh sách L sinh viên gồm các số C1,C2,…,CL là mã số sinh viên. Hai bạn cần chia dãy này thành G trung đội, mỗi trung đội gồm các phần tử liên tiếp (mỗi trung đội có ít nhất một sinh viên, mỗi sinh viên thuộc đúng một trung đội).

Với phần tử thứ i (tức là sinh viên thứ i), chi phí đăng ký vào trung đội của sinh viên đó là tích của Ci và số lượng sinh viên nằm cùng trung đội với Ci (tính cả sinh viên đó). Chi phí của danh sách ứng với một cách chia trung đội là tổng chi phí của các sinh viên thuộc G trung đội đã chia.

Yêu cầu: Hãy xác định cách chia trung đội để chi phí là nhỏ nhất.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên L,G.
  • L dòng tiếp theo, dòng thứ i chứa số nguyên Ci (1≤Ci≤109).

Dữ liệu ra

In ra một dòng duy nhất là chi phí nhỏ nhất.

Ràng buộc

  • 1≤G≤L≤8000, G≤800.
  • 1≤Ci≤109.

Subtasks

  • Subtask 1 (20% số điểm): L≤100.
  • Subtask 2 (10% số điểm): G≤10.
  • Subtask 3 (70% số điểm): L≤8000, G≤800, Ci≤109.

Ví dụ

Input Output Giải thích
6 3
11
11
11
24
26
100
299 Cách chia tối ưu là (11,11,11),(24,26),(100). Chi phí là 11·3+11·3+11·3+24·2+26·2+100·1=299.
4 4
5
1
7
2
15 G=L nên mỗi trung đội có đúng một sinh viên, chi phí là 5+1+7+2=15.

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