• HSGTIN.VN
  • Trang chủ
  • Danh sách bài
  • Các bài nộp
  • Thành viên
  • Các kỳ thi
  • Thông tin
VI EN Đăng nhập  hoặc  Đăng ký

  • Blog
  • Sự kiện
  • Tin tức
  • Blog

2

Second block

ItzPhuc đã đăng vào 2, Tháng 5, 2026, 14:36

BYNARY SEARCH

. Điều kiện áp dụng

Mảng đã sắp xếp

Hoặc bài toán có tính chất:

nếu x thỏa → mọi giá trị lớn hơn (hoặc nhỏ hơn) cũng thỏa

(→ monotonic)

Tìm vị trí x trong mảng tăng dần

int l = 0, r = n - 1;

while (l <= r) {

int m = (l + r) >> 1;

if (a[m] == x) return m;

if (a[m] < x) l = m + 1;

else r = m - 1;

}

return -1;

. Lowerbound / Upperbound

lower_bound: phần tử đầu tiên ≥ x

int l = 0, r = n;

while (l < r) {

int m = (l + r) >> 1;

if (a[m] < x) l = m + 1;

else r = m;

}

upper_bound: phần tử đầu tiên > x

int l = 0, r = n;

while (l < r) {

int m = (l + r) >> 1;

if (a[m] <= x) l = m + 1;

else r = m;

}

Đếm số phần tử = x:

upperbound - lowerbound

. Binary Search trên đáp án (quan trọng nhất)

Dạng:

Tìm giá trị nhỏ nhất/lớn nhất thỏa điều kiện

int l = L, r = R, ans = -1;

while (l <= r) {

int m = (l + r) >> 1;

if (check(m)) {

    ans = m;

    r = m - 1; // tìm min

} else {

    l = m + 1;

}

}

Nếu tìm max thì đổi: l = m + 1;

Ví dụ kinh điển

Chia gỗ / chia mảng / tối ưu

“Tìm max chiều dài”

“Tìm min thời gian”

“Tối ưu chi phí”

👉 Pattern:

đoán m

check xem có làm được không

. Binary Search số thực

double l = 0, r = 1e9;

for (int i = 0; i < 100; i++) {

double m = (l + r) / 2;

if (check(m)) r = m;

else l = m;

}

ItzPhuc
o2, Tháng 5, 2026, 14:36 0

1

Chào mừng bạn đến với HSGTIN.VN

admin đã đăng vào 12, Tháng 11, 2023, 5:00

Chào mừng bạn đến với on.hsgtin.vn

Trang luyện tập ôn thi hsg tin học dành cho các học viên của hsgtin.vn .

Các bạn có thể sử dụng trang web này để học tập thuật toán và rèn luyện kĩ năng lập trình thi đấu cho cá nhân bạn.

Diễn đàn trao đổi: Nhóm fb

Bài toán ngẫu nhiên

Tài liệu ôn thi: Sách

admin
o12, Tháng 11, 2023, 5:00 0

Top thành viên

# Tên truy cập Điểm
1
Lam2012
160,44
2
ItzPhuc
132,64
3
hnam
95,89
4
voanhnguyen123
93,08
5
Truong_Kiet
92,68
Tổ chức Xem đầy đủ >>>

Top đóng góp

# Tên truy cập Đóng góp
1
WeoBuXCS
12
2
miyakiCoder
10
3
NguyenAnPhu2013
7
4
zonotaroz
5
5
lee0577
5
Xem đầy đủ >>>

Dòng bình luận

  • minhtri2005 → Hiệu Hai Số
  • Lam2012 → Đếm số
  • bdhsgtin → Đếm số từ
  • nguyenvohoanggia → 2a+3b
  • ItzPhuc → ĐẾM SỐ
  • phamphuongmai1710 → ĐẾM SỐ
  • tranleanhviet2221 → TỔNG 2 SỐ NGUYÊN
RSS / Atom

Bài mới

  • Giả thiết collatz
  • Đếm số
  • Lựa chọn tối ưu
  • NHIỆM VỤ
  • BÀI TOÁN KHÓ
  • Chia quà
  • Tách số
RSS / Atom

dựa trên nền tảng DMOJ | theo dõi VNOI trên Github và Facebook