trang chủ / bài tập / arrdivmin

Mảng và phép chia (điểm nhỏ nhất)

Đề bài

Mô tả

Cho một mảng a gồm n số nguyên và một số nguyên k thỏa mãn 2kn.

Bạn phải thực hiện đúng k thao tác trên mảng này. Trong một thao tác, bạn chọn hai phần tử của mảng (gọi là aiaj; chúng có thể bằng nhau về giá trị, nhưng vị trí phải khác nhau), xóa cả hai khỏi mảng, và cộng vào điểm số của bạn giá trị aiaj (phần nguyên của phép chia ai cho aj).

Ban đầu điểm số bằng 0. Sau khi thực hiện đúng k thao tác, bạn cộng thêm tất cả các phần tử còn lại trong mảng vào điểm số.

Hãy tính điểm số nhỏ nhất có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số lượng bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm hai dòng:
    • Dòng thứ nhất chứa hai số nguyên nk.
    • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số nguyên — điểm số nhỏ nhất có thể đạt được.

Ràng buộc

  • 1t500
  • 1n100
  • 0kn/2
  • 1ai2·105

Ví dụ

Input Output Giải thích
5
7 3
1 1 1 2 1 3 1
5 1
5 5 5 5 5
4 2
1 3 3 7
2 0
4 2
9 2
1 10 10 1 10 2 7 10 3
2
16
0
6
16
Bộ 1: chọn (1,2), (1,3), (1,1) cho ba thao tác được 0+0+1=1, còn lại một phần tử 1, tổng 2. Bộ 3: chọn (1,3)(3,7) đều cho 0, mảng rỗng nên kết quả 0. Bộ 4: k=0 nên điểm bằng tổng cả mảng 4+2=6.
1
6 3
4 4 5 5 6 6
0 Ghép (4,5), (4,6), (5,6); mỗi phép chia đều cho phần nguyên 0, không còn phần tử nào.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0