Chung kết LQDOJ CUP 2024 - Luyện tập

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Aroma bắt đầu học lập trình thi đấu. Theo kinh nghiệm truyền lại từ các tiền nhân, nếu Aroma giải được \(n\) bài tập có độ khó lần lượt là \(a_1, a_2, \dots, a_n\) thì Aroma sẽ đủ kinh nghiệm để đạt được kết quả tốt trong mọi kì thi.

Thời gian giải bài tập phụ thuộc trình độ của Aroma. Cụ thể, xem như Aroma có trình độ là một số nguyên \(s\), thì thời gian để Aroma giải một bài tập độ khó \(a_i\)\(\frac{a_i}{s}\) ngày. Tuy nhiên mỗi khi Aroma giải được một bài tập thì cô sẽ ăn mừng cho đến hết ngày hôm đó và không thực hiện làm việc gì khác, nên thời gian thực tế cần bỏ ra là \(\lceil \frac{a_i}{s} \rceil\).

Trình độ ban đầu của Aroma là \(s = 1\), tuy nhiên cô có thể nâng cao trình độ của mình bằng cách tìm hiểu thêm về các kĩ năng trong lập trình thi đấu. Cụ thể Aroma có thể cải thiện \(m\) kĩ năng, mỗi kĩ năng có độ khó là \(b_1, b_2, \dots, b_m\). Khi cải thiện một kĩ năng thì trình độ \(s\) của Aroma sẽ tăng lên \(1\) đơn vị, không kể kĩ năng được cải thiện là gì.

Để cải thiện một kĩ năng \(i\) một lần thì Aroma cần dùng \(b_i\) ngày để nghiên cứu kĩ năng này. Tuy nhiên, vì trình độ ở một kĩ năng càng cao thì càng khó cải thiện, nên nếu Aroma muốn cải thiện thêm kĩ năng thứ \(i\) lần thứ \(2\) thì cần \(b_i^2\) ngày, nếu muốn cải thiện lần thứ \(3\) thì cần \(b_i^3\) ngày. Tổng quát, nếu muốn cải thiện lần thứ \(x\) thì cần \(b_i^x\) ngày.

Lưu ý rằng một khi Aroma bắt đầu giải một bài tập hoặc cải thiện một kĩ năng thì Aroma sẽ không làm việc khác cho đến khi cô hoàn thành công việc đó.

Hỏi xác định số ngày tối thiểu mà Aroma cần để hoàn thành cả \(n\) bài tập là bao nhiêu?

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\)\(m\) (\(1 \le n, m \le 10^5\)) là số bài tập và số kĩ năng.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)) là độ khó của các bài tập.
  • Dòng thứ ba chứa \(m\) số nguyên \(b_1, b_2, \dots, b_m\) (\(2 \le b_i \le 10^9\)) là độ khó của các kĩ năng.

Output

  • In ra một số nguyên duy nhất là số ngày tối thiểu để Aroma giải quyết \(n\) bài tập.
  • Lưu ý rằng trình độ cuối cùng của Aroma không quan trọng, chỉ cần cô giải được toàn bộ \(n\) bài tập.

Constraints

  • Subtask 1 (25% số điểm): \(n \le 500\).
  • Subtask 2 (25% số điểm): \(\max_{i=1}^n(a_i) - \min_{i=1}^n(a_i) \le 10^6\).
  • Subtask 3 (25% số điểm): \(n \le 10000\)\(a_i \le 10^8\).
  • Subtask 4 (25% số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
3 2
10 20 30
2 3
Output
25
Note

Trong test ví dụ:

  • Nếu Aroma không cải thiện kĩ năng, thì cô cần \(10 + 20 + 30 = 60\) ngày để giải quyết các bài tập.
  • Nếu Aroma cải thiện kĩ năng một lần, thì cô cần \(\lceil \frac{10}{2} \rceil + \lceil \frac{20}{2} \rceil + \lceil \frac{30}{2} \rceil = 30\) ngày để giải quyết các bài tập, tuy nhiên cần thêm ít nhất \(2\) ngày nữa để cải thiện một trong các kĩ năng \(1\) lần.
  • Để hoàn thành các bài tập trong \(25\) ngày, Aroma cần:
    • Cải thiện kĩ năng thứ nhất \(2\) lần trong \(2 + 2^2 = 6\) ngày.
    • Cải thiện kĩ năng thứ hai \(1\) lần trong \(3\) ngày.
    • Trình độ lúc này là \(s = 1 + 2 + 1 = 4\).
    • Hoàn thiện các bài tập trong \(\lceil \frac{10}{4} \rceil + \lceil \frac{20}{4} \rceil + \lceil \frac{30}{4} \rceil = 3 + 5 + 8 = 16\) ngày.
    • Tổng cộng: \(6 + 3 + 16 = 25\) ngày.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: