trang chủ / đề bài / 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 2k≤n.

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à ai và aj; 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 n và k.
    • 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

  • 1≤t≤500
  • 1≤n≤100
  • 0≤k≤⌊n/2⌋
  • 1≤ai≤2·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) và (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.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