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

Xây chuồng cao tầng

Đề bài

Mô tả

Bác nông dân John đang xây một chuồng bò gồm N tầng, với sự giúp đỡ của K con bò. Mỗi con bò phải được phân công vào đúng một tầng, và mỗi tầng phải có ít nhất một con bò.

Tầng thứ i cần ai đơn vị công việc để hoàn thành. Nếu có c con bò được phân công vào tầng i, thời gian để hoàn thành tầng đó là ai/c giờ.

Các tầng phải được xây tuần tự (tầng i phải xong trước khi bắt đầu tầng i+1), nên tổng thời gian là tổng thời gian hoàn thành từng tầng.

Hãy xác định tổng thời gian tối thiểu để xây xong chuồng bò, với cách phân bổ bò tối ưu.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên NK.
  • N dòng tiếp theo, dòng thứ i chứa giá trị ai.

Dữ liệu ra

In ra tổng thời gian tối thiểu, làm tròn đến số nguyên gần nhất.

Dữ liệu đầu vào được đảm bảo rằng đáp án cách giá trị nguyên gần nhất hơn 0.1.

Ràng buộc

  • 1NK1012
  • N105
  • 1ai1012

Ví dụ

Input Output Giải thích
2 5
10
4
5 Phân bổ 4 bò cho tầng 1 và 1 bò cho tầng 2. Thời gian = 10/4+4/1=2.5+4=6.5. Tuy nhiên phân bổ 3 bò tầng 1, 2 bò tầng 2 cho thời gian 10/3+4/23.33+2=5.33. Phân bổ tối ưu cho kết quả làm tròn là 5.
4 7
2
10
5
1
9 Có 4 tầng và 7 con bò, mỗi tầng cần ít nhất 1 bò. Phân bổ tối ưu 3 bò còn dư cho các tầng có khối lượng công việc lớn nhất.

Ghi chú

Lưu ý rằng K có thể rất lớn (đến 1012), nên thuật toán tham lam thông thường (thêm từng bò một) sẽ không đủ nhanh.

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