You are on page 1of 3

Luyện thi HSG tin ứ ng dụ ng cá c Thuậ t toá n trong giả i đề

…………………………LH: 0866057939 T.Lâm………………………………………………..

Buổi 16
Câu 1 (6,0 điểm) . Số đồng xu
Hãy xét một hệ thống tiền bao gồm n đồng xu. Mỗi đồng xu có giá trị là một số nguyên
dương. Nhiệm vụ của bạn là tạo ra một khoản tiền x bằng cách sử dụng các đồng xu có
sẵn sao cho số lượng đồng xu là tối thiểu.
Ví dụ: nếu các đồng xu là {1,5,7} và tổng mong muốn là 11, một giải pháp tối ưu
là 5+5+1, cần 3 đồng xu.

Dữ liệu nhập:
- Dòng đầu vào đầu tiên có hai số nguyên n và x: số lượng đồng xu và tổng số tiền
mong muốn. (n<=100, x<=106)

- Dòng thứ hai có n số nguyên phân biệt a1,a2,…,an: giá trị của mỗi đồng xu.

Dữ liệu ra:
- In một số nguyên: số lượng đồng xu tối thiểu. Nếu không thể tạo ra tổng mong muốn,
hãy in −1.

Ví dụ:
dongxu.inp dongxu.out
3 11 3
157

Câu 2 (6,0 điểm) Chia trang


Văn bản là một dãy gồm N từ đánh số từ 1 đến N. Từ thứ i có độ dài là wi. Phân trang là một
cách xếp lần lượt các từ của văn bản vào dãy các dòng, mỗi dòng có độ dài tối đa là L: sao cho
tổng độ dài của các từ trên cùng một dòng không vượt quá L.
Ta gọi hệ số phạt của mỗi dòng trong cách phân trang là hiệu số L - S, trong đó S là tổng độ dài
của các từ xếp trên dòng đó. Hệ số phạt của cách phân trang là giá trị lớn nhất trong số các hệ số
phạt của các dòng.
Bạn hãy lập chương trình nhận đầu vào là danh sách các từ, tìm cách phân trang với hệ số
phạt nhỏ nhất.
Dữ liệu nhập:
- Dòng 1 chứa 2 số nguyên dương N, L (1 ≤ N ≤ 6000, 1 ≤ L ≤ 1000)
- Dòng thứ i trong số N dòng tiếp theo chứa số nguyên dương wi. (1 ≤ Wi ≤ L)
Kết quả:
- in ra hệ số phạt nhỏ nhất

chiatrang.inp chiatrang.out
45 2
3
2
2
4

Giải thích: Trong ví dụ trên ta có thể phân thành 3 dòng:


- Dòng 1: gồm một từ (3) hệ số phạt dòng này là 5 - 3 = 2
- Dòng 2: gồm hai từ (2, 2) hệ số phạt là 5 - 4 = 1
- Dòng 3: gồm một từ (4) hệ số phạt là 5 - 4 = 1
- Đáp án: max(2, 1, 1) = 2

latgach.inp latgach.out
 Câu 3 . Xếp hộp lồng nhau (6.0 điểm)
Hàng hóa mua về được chứa trong các thùng giấy hình hộp chữ nhật. Để giải phóng chỗ người
ta phải xếp những hộp giấy rỗng lồng vào nhau cho gọn. Giả sử có N hộp giấy rỗng, các hộp
được đánh số từ 1 đến N. Với mỗi hộp giấy rỗng, người ta biết được chính xác độ dài hai cạnh
đáy của hộp là a và b.
Yêu cầu: Hãy giúp người họ xếp các hộp giấy rỗng sao cho trong số các dãy hộp giấy xếp chồng
nhau ta được một dãy các hộp xếp chồng nhau có số hộp giấy lớn nhất có thể.

Dữ liệu vào: Cho trong file văn bản box.INP, có cấu trúc như sau:
 Dòng 1: Ghi số nguyên dương N, là số lượng hộp giấy rỗng. (1 ≤ N ≤ 1000)
 N dòng tiếp theo: Mỗi dòng ghi hai số nguyên dương a i bi cách nhau một khoảng trắng, là độ dài
hai cạnh đáy của hộp giấy rỗng thứ i. (1 ≤ ai, bi ≤ 10000)

Dữ liệu ra: Ghi ra file văn bản box.OUT số nguyên dương M là kết quả của bài toán.
box.inp box.out
5 3
1 5
5 7
6 4
3 6
2 5

Ví dụ:

Giải thích: số lượng hộp giấy xếp lồng nhau lớn nhất là 3, một số cách xếp theo chỉ số các hộp
từ ngoài vào trong: 2 3 5; hoặc 2 3 1; hoặc 2 4 5; ...

You might also like