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

Màn chơi và các vùng

Đề bài

Mô tả

Một trò chơi điện tử có n màn chơi, đánh số từ 1 đến n. Các màn được chia thành k vùng. Mỗi vùng là một nhóm gồm một số màn liên tiếp (khác rỗng), và mỗi màn thuộc đúng một vùng.

Trò chơi lặp lại quá trình sau:

  1. Nếu tất cả các vùng đã hoàn thành thì trò chơi kết thúc. Ngược lại, hệ thống tìm vùng đầu tiên còn ít nhất một màn chưa hoàn thành. Gọi vùng đó là X.
  2. Hệ thống tạo một túi thẻ (ban đầu rỗng). Mỗi thẻ đại diện cho một màn (có thể có nhiều thẻ cùng đại diện một màn):
    • Với mỗi màn i đã hoàn thành trong vùng X, hệ thống bỏ vào túi ti thẻ đại diện cho màn i.
    • Gọi j là màn chưa hoàn thành đầu tiên trong vùng X. Hệ thống bỏ vào túi tj thẻ đại diện cho màn j.
  3. Hệ thống rút ngẫu nhiên đều một thẻ trong túi, người chơi bắt đầu màn ứng với thẻ đó. Người chơi tốn đúng một giờ và hoàn thành màn đó (kể cả khi màn này đã từng được hoàn thành trước đây).

Cho n, k và các giá trị t1,t2,,tn, hãy chia các màn thành các vùng sao cho kỳ vọng số giờ cần để kết thúc trò chơi là nhỏ nhất. In ra giá trị kỳ vọng nhỏ nhất đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk: số màn chơi và số vùng.
  • Dòng thứ hai chứa n số nguyên t1,t2,,tn.

Dữ liệu ra

  • In ra một số thực: kỳ vọng số giờ nhỏ nhất khi các màn được chia vùng tối ưu.

Đáp án được coi là đúng nếu sai số tuyệt đối hoặc tương đối so với đáp án chuẩn không vượt quá 104.

Ràng buộc

  • 1n2·105
  • 1kmin(50,n)
  • 1ti105

Ví dụ

Input Output Giải thích
4 2
100 3 5 7
5.7428571429 Chia 4 màn thành 2 vùng. Tối ưu: vùng thứ nhất chỉ chứa màn 1 (bắt buộc là màn đầu tiên), vùng thứ hai chứa ba màn còn lại.
6 2
1 2 4 8 16 32
8.5000000000 Tối ưu: chia thành hai vùng, mỗi vùng 3 màn liên tiếp.

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