QJ3854 - Trả lại tiền thừa

Xem dưới dạng PDF

Gửi bài giải

Điểm: 100
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 128M

Tác giả:
Kiểu bài tập

Lan là một người yêu thích thuật toán, lần này cậu đến hiệu sách để chọn sách về lập trình thi đấu.

Lần này cậu mang tổng cộng $x$ đồng đến hiệu sách mua sách, nhân viên hiệu sách cần chuẩn bị tiền lẻ để thối lại. Trong kho của cửa hàng có $n$ loại mệnh giá tiền lẻ, mỗi loại có vô hạn tờ.

Yêu cầu:

  1. Số tiền lẻ chuẩn bị phải ghép được mọi số tiền từ 1 đến $x$ (bao gồm cả hai mức $1$ và $x$).

  2. Số tờ tiền mang theo phải ít nhất có thể

  3. Nếu không thể thỏa mãn điều kiện, in ra $-1$

Dữ liệu vào

Dòng đầu tiên: hai số nguyên $n, x$

Dòng thứ hai: $n$ số nguyên dương, biểu thị mệnh giá của $n$ loại tiền lẻ

Dữ liệu ra

In ra số tờ tiền lẻ ít nhất cần mang theo; nếu vô nghiệm thì in ra $-1$

Ví dụ

Input

3 9
1 2 3

Output

4

Ghi chú

Giải thích ví dụ

Chọn: 2 tờ mệnh giá 3 + mỗi loại 1 tờ mệnh giá 1 và mệnh giá 2, tổng cộng 4 tờ, có thể ghép ra mọi số tiền từ 1~9.

Giới hạn dữ liệu

  • $1 \le n \le 10^6$

  • $1 \le x \le 10^{18}$

  • $1 \le a_i \le 10^9$

Đây là một bài tham lam kinh điển, ý tưởng giải chính:

  1. Trước tiên sắp xếp các mệnh giá từ nhỏ đến lớn

  2. Bắt buộc phải có mệnh giá 1, nếu không thì vô nghiệm ngay

  3. Dùng chiến lược tham lam để mở rộng dần số tiền lớn nhất có thể phủ được, đếm số tờ tiền ít nhất


Nhận xét

Không có ý kiến tại thời điểm này.