Hướng dẫn giải của [TS10 Khánh Hòa 2025 - 2026] CAU1
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả:
Bài 1
1. Tóm tắt bài toán
- Cho
nvị trí được đánh số từ 1 tớin. Khoảng cách giữa mỗi hai vị trí liên tiếp là 1 đơn vị độ dài. - Con thỏ đang ở vị trí
x₁, cà rốt ở vị tríx₂. - Mỗi bước nhảy, con thỏ có thể di chuyển tối đa
ađơn vị độ dài.
2. Yêu cầu
Tìm số bước nhảy ít nhất để con thỏ từ x₁ tới vị trí x₂.
[!Warning] Lưu ý chung
- Giá trị
x₁vàx₂có thể lên tới ~10^{12}~.- Trong C++, cần dùng kiểu
long longđể tránh tràn số.
Subtask 1: x₂ ≤ 10⁶
Điều kiện ràng buộc
x₁ ≤ x₂ ≤ 10⁶- Ở subtask này, ta có thể brute-force (vét cạn).
Nhận xét
- Để đạt số bước nhảy ít nhất, mỗi lần thỏ cố gắng nhảy đúng
ađơn vị. - Gọi
cntlà số bước nhảy tối thiểu.
- Để đạt số bước nhảy ít nhất, mỗi lần thỏ cố gắng nhảy đúng
Thuật toán (vét cạn)
- Khởi tạo
cnt = 0vàcur = x₁. Trong khi
cur < x₂:Con thỏ nhảy thêm
ađơn vị:cur += aTăng
cntlên 1:cnt += 1
Dừng khi
cur ≥ x₂.- Kết quả trả về là
cnt.
- Khởi tạo
- Độ phức tạp thuật toán: ~O(x_2)~
- Code mẫu
https://www.ideone.com/ptCXT5
Subtask 2: Không có ràng buộc gì thêm
Nhận xét
- Nhận xét
- Như ở subtask 1, để tối thiểu hóa số bước, thỏ luôn cố gắng nhảy hết
ađơn vị mỗi bước (trừ khi khoảng cách cuối cùng nhỏ hơna). - Do vậy, số bước nhảy tối thiểu chính bằng: $$ \left\lceil \frac{x₂ - x₁}{a} \right\rceil $$ :::
- Như ở subtask 1, để tối thiểu hóa số bước, thỏ luôn cố gắng nhảy hết
- Cách tính hiệu quả
- Với hai số nguyên dương
AvàB, ta có: $$ \left\lceil \frac{A}{B} \right\rceil = \frac{A + B - 1}{B} \quad(\text{chia lấy phần nguyên}) $$ - Áp dụng vào bài toán: $$ \text{Số bước tối thiểu} = \left\lceil \frac{x₂ - x₁}{a} \right\rceil = \frac{(x₂ - x₁) + a - 1}{a} $$
- Với hai số nguyên dương
- Độ phức tạp thuật toán: ~O(1)~
- Code mẫu
https://www.ideone.com/N6bla8

Bình luận