trang chủ / đề bài / bookdist

Phân bố sách

Đề bài

Mô tả

Có một tủ sách gồm n ngăn. Ngăn thứ i đang chứa ai quyển sách. Bạn muốn mỗi ngăn chứa không quá k quyển sách.

Để đạt được mục tiêu, bạn có thể thực hiện hai loại thao tác sau (mỗi loại có thể dùng nhiều lần, theo thứ tự tùy ý):

  1. Chọn đúng một ngăn và chuyển toàn bộ sách của ngăn đó vào kho (tức gán ai:=0). Mỗi lần thực hiện tốn x giây.
  2. Lấy toàn bộ sách trên cả n ngăn rồi phân bố lại đều giữa n ngăn. Mỗi lần thực hiện tốn y giây.

Với một dãy a gồm n số, phân bố đều là một dãy b gồm n số sao cho tổng của b bằng tổng của a và giá trị max(b)−min(b) nhỏ nhất có thể. Ví dụ, nếu a=[5,4,3] thì phân bố đều là b=[4,4,4]; nếu a=[1,2,3,4] thì phân bố đều là b=[2,3,3,2] (hoặc một hoán vị bất kỳ của dãy này).

Hãy tìm tổng số giây ít nhất cần bỏ ra để mỗi ngăn chứa không quá k quyển sách.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên t: số lượng test.
  • Với mỗi test:
    • Dòng thứ nhất chứa bốn số nguyên n, k, x, y.
    • Dòng thứ hai chứa n số nguyên a1,a2,…,an.

Dữ liệu ra

Với mỗi test, in ra một số nguyên: số giây ít nhất cần bỏ ra.

Ràng buộc

  • 1≤t≤104
  • 1≤k≤n≤2·105
  • 1≤x,y≤104
  • 1≤ai≤n
  • Tổng n trên tất cả các test không vượt quá 2·105.

Ví dụ

Input Output Giải thích
6
5 4 3 5
1 2 2 3 5
5 3 4 5
1 5 1 5 5
5 4 5 6
1 2 5 3 5
4 3 2 10
4 4 1 1
4 3 10 2
4 4 1 1
4 1 5 4
1 2 1 3
3
9
6
4
2
9
Test 1: dùng thao tác 1 cho ngăn thứ năm, dãy thành [1,2,2,3,0], tốn 3. Test 2: dùng thao tác 1 cho ngăn thứ hai rồi dùng thao tác 2, dãy thành [1,0,1,5,5]→[2,2,3,3,2], tốn 4+5=9. Test 3: chỉ dùng thao tác 2, dãy thành [4,3,3,3,3], tốn 6. Test 5: chỉ dùng thao tác 2, dãy thành [2,3,2,3], tốn 2.

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