Binany Search (Tìm kiếm nhị phân) là một giải thuật tìm kiếm nhanh với độ phức tạp thời gian chạy là Ο(logn). Giải thuật tìm kiếm nhị phân làm việc dựa trên nguyên tắc chia để trị (Divide and Conquer). Để giải thuật này có thể làm việc một cách chính xác thì tập dữ liệu phải được sắp xếp trước.
Binary Search tìm kiếm một phần tử cụ thể bằng cách so sánh phần tử tại vị trí giữa nhất của tập dữ liệu. Nếu tìm thấy kết nối thì chỉ mục của phần tử được trả về. Nếu phần tử cần tìm là lớn hơn giá trị phần tử giữa thì phần tử cần tìm được tìm trong mảng con nằm ở bên phải phần tử giữa; nếu không thì sẽ tìm ở trong mảng con nằm ở bên trái phần tử giữa. Tiến trình sẽ tiếp tục như vậy trên mảng con cho tới khi tìm hết mọi phần tử trên mảng con này.
Yêu cầu: Bạn được cho hai dãy số nguyên \(A\) và \(B\), mỗi dãy có \(N\) phần tử. Nhiệm vụ của bạn là đếm xem có bao nhiêu phần tử của dãy \(A\) xuất hiện trong dãy \(B\).
Input
Dòng đầu tiên là số nguyên \(N\) \((N \leq 1e5)\)
Dòng thứ hai là dãy \(A\)
Dòng thứ ba là dãy \(B\)
\(1 \leq A_{i}, B_{i} \leq 10^{18}\)
Output
Kết quả bài toán.
Example
Test 1
Input
5
2 3 1 4 5
1 2 3 4 8
Output
4
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.