trang chủ / đề bài / tst22_field

Chia ruộng

Đề bài

Mô tả

Một cánh đồng lúa hình chữ nhật có kích thước chiều dọc là L và chiều ngang là W cần được đào m đường mương khác nhau chạy song song với cạnh chiều ngang nối hai cạnh chiều dọc của cánh đồng nhằm phục vụ hiệu quả cho việc tưới tiêu canh tác. Các đường mương này chia cánh đồng theo chiều dọc thành (m+1) lớp có diện tích dương. Trong bài toán này, chúng ta coi mỗi đường mương có bề rộng không đáng kể.

Chính quyền địa phương tìm các phân chia cánh đồng lúa cho n hộ gia đình quản lý canh tác, hộ gia đình thứ i được chia một thửa ruộng hình chữ nhật con nằm trong một lớp có hai cạnh thuộc đường mương hoặc cạnh chiều ngang của cánh đồng, và có diện tích định trước ai sao cho ∑ai=L·W. Gọi li và wi lần lượt là kích thước chiều dọc và chiều ngang thửa ruộng của hộ gia đình thứ i, chu vi thửa ruộng là pi=2·(li+wi). Chính quyền địa phương mong muốn tìm ra phương án phân chia sao cho tổng chu vi tất cả các thửa ruộng con ∑pi là nhỏ nhất.

Yêu cầu: Cho biết kích thước chiều dọc L và chiều ngang W của cánh đồng lúa hình chữ nhật, số lượng mương cần đào và n giá trị diện tích a1,a2,…,an. Hãy giúp chính quyền địa phương tìm ra phương án phân chia mong muốn và đưa ra giá trị tổng chu vi nhỏ nhất của tất cả các thửa ruộng con.

Dữ liệu vào

Dòng đầu tiên chứa một số nguyên dương T là số lượng bộ test (T≤3).

Mỗi nhóm dòng trong số T nhóm dòng tiếp theo mô tả một bộ test có cấu trúc như sau:

  • Dòng thứ nhất chứa hai số nguyên không âm n và m (m<n≤25000).
  • Dòng thứ hai chứa hai số nguyên không âm L và W (L,W≤109).
  • Dòng cuối cùng chứa n số nguyên dương ai (ai≤109,1≤i≤n). Dữ liệu đảm bảo ∑ai=L·W.

Hai số liên tiếp trong cùng một dòng được ghi cách nhau bởi dấu cách.

Dữ liệu ra

In ra T dòng, mỗi dòng một số thực duy nhất là tổng chu vi tính được trong bộ test tương ứng và có tối đa 9 chữ số sau dấu chấm thập phân (viết ở dạng thập phân thông thường, không dùng dạng lũy thừa như 1e+13). Đáp án của bạn được phép có sai số tuyệt đối đến 10−3 so với đáp án trong bộ test.

Ràng buộc

  • 1≤T≤3.
  • 0≤m<n≤25000.
  • 0≤L,W≤109.
  • 1≤ai≤109, ∑ai=L·W.

Subtasks

  • Subtask 1 (12% số điểm): m,n≤15.
  • Subtask 2 (28% số điểm): m,n≤500.
  • Subtask 3 (26% số điểm): m,n≤4000.
  • Subtask 4 (34% số điểm): m,n≤25000.

Ví dụ

Input Output Giải thích
1
7 2
7 8
11 7 12 6 3 7 10
80.000000000 Ba lớp có chiều cao 2, 2,125 và 2,875: lớp thứ nhất gồm các thửa diện tích 3,6,7, lớp thứ hai gồm 7,10, lớp thứ ba gồm 11,12. Tổng chu vi là 2·(3·2+16/2)+2·(2·2,125+17/2,125)+2·(2·2,875+23/2,875)=28+24,5+27,5=80.
2
3 1
1 5
1 2 2
4 3
1 4
1 1 1 1
23.200000000
34.000000000
Bộ test thứ nhất: lớp chiều cao 0,6 gồm hai thửa 1,2 và lớp chiều cao 0,4 gồm thửa 2, tổng chu vi 2·(2·0,6+5)+2·(0,4+5)=12,4+10,8=23,2. Bộ test thứ hai: mỗi lớp có chiều cao 0,25 và chứa một thửa 0,25×4, tổng chu vi 4·8,5=34. (Ví dụ này không có trong đề gốc.)

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