Editorial for Tổng Xu Bị Thiếu


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: creator

Sắp xếp mảng tiền xu coin[]. Nhận xét rằng nếu xu nhỏ nhất có giá trị lớn hơn 1 thì 1 là kết quả bài toán.

Tạo mảng ans[] với ý nghĩa: ans[i] là số tiền nhỏ nhất mà i đồng tiền nhỏ nhất không thể tạo ra. Từ đó ta có công thức truy hồi:

  • ans[0]=1,
  • ans[i]=ans[i1]+coin[i1] nếu i1coin[i1]ans[i1]

    Khi sử dụng i1 đồng tiền thì các tiền trong đoạn A:[1,ans[i1]1] đều có thể tạo ra, sử dụng thêm đồng coin[i1] các tiền trong đoạn B:[coin[i1],ans[i1]+coin[i1]1] đều có thể tạo ra. Do coin[i1]ans[i1], hợp hai đoạn AB các tiền trong đoạn [1,ans[i1]+coin[i1]1] đều có thể tạo ra, từ đó ta có công thức như trên.

  • ans[i]=ans[i1] nếu i1coin[i1]>ans[i1].

    Lập luận tương tự, hai đoạn không hợp được thành một trong trường hợp này.

Chú ý rằng do mảng bắt đầu từ chỉ số 0 nên coin[i1] là đồng tiền thứ i.

Lời giải cài đặt ngắn gọn chỉ sử dụng biến ans=1, break vòng lặp nếu coin[i]>ans.

ĐPT: O(n).


Comments

There are no comments at the moment.