Tìm kiếm nhị phân biến đổi - Ôn chuyên 2026 lớp 1
Tìm kiếm phần tử xuất hiện cuối cùng
Nộp bàiPoint: 1
Cho một mảng A nguyên gồm N phần tử, hãy tìm chỉ số của phần tử xuất hiện cuối cùng trong mảng, ví dụ mảng 1, 3, 4, 5, 5, 5, 6, 7. Nếu tìm số 5 thì số 5 xuất hiện cuối cùng sẽ có chỉ số 5, chỉ số này được in ra. Nếu không tìm thấy thì in ra -1
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 < A[i] \leq 10^6~
Input 01:
8 5
1 3 4 5 5 5 6 7
Output 01:
5
Input 02:
7 -3
-3 -3 -1 4 5 6 7
Output 02:
1
Input 03:
6 10
1 3 4 5 6 7
Output 03:
-1
Tìm kiếm vị trí đầu tiên của phần tử x trong mảng
Nộp bàiPoint: 1
Cho một mảng A nguyên gồm N phần tử đã sắp xếp tăng dần, hãy tìm chỉ số của phần tử x xuất hiện đầu tiên trong mảng, ví dụ mảng 1, 3, 4, 5, 5, 5, 6, 7. Nếu tìm số x = 5 thì số 5 xuất hiện đầu tiên sẽ có chỉ số 3, in ra chỉ số này. Nếu không tìm thấy in ra -1.
Ràng buộc: ~0 < N \leq 10^6~, ~-10^6 < A[i] \leq 10^6~
Input 01:
8 5
1 3 4 5 5 5 6 7
Output 01:
3
Input 02:
7 -3
-3 -3 -1 4 5 6 7
Output 02:
0
Input 03:
6 10
1 3 4 5 6 7
Output 03:
-1
Vị trí đầu tiên lớn hơn hoặc bằng X
Nộp bàiPoint: 1
Cho mảng A gồm N phần tử. Sử dụng hàm có sẵn tìm vị trí đầu tiên của phần tử lớn hơn hoặc bằng X.
Dòng đầu tiên nhập N và X
Dòng tiếp theo nhập N giá trị của mảng A
In ra vị trí nếu tìm thấy, nếu không tìm thấy thì in ra N.
Ràng buộc: ~0 < N \leq 10^6~; ~0 \leq A[i] \leq 10^9~
Input 01:
10 6
3 5 6 6 6 6 9 10 11 13
Output 01:
2
Vị trí đầu tiên trong mảng lớn hơn hoặc bằng 6 là vị trí có chỉ số là 2 (có giá trị là 6)
Input 02:
10 14
3 5 6 6 6 6 9 10 11 13
Output 02:
10
Cặp số có tổng bằng K trong mảng
Nộp bàiPoint: 1
Cho mảng a gồm n phăn tử và số nguyên dương k. Đếm số lượng cặp số ai, aj (i != j) có tổng bằng k.
Gợi ý: Sắp xếp mảng tăng dẫn sau đó với mỗi phần tử a[i] trong mảng tìm xem trong đoạn [i + 1, n - 1] có bao nhiêu phần tử có giá trị là k - a[i], bằng cách tìm vị trí đầu tiên và vị trí cuối cùng của phần tử có giá trị là k - a[i] => Số lượng
Định dạng đầu vào: Dòng thứ 1 là số lượng phần tử trong mảng và số nguyên dương k; Dòng thứ 2 là n phần tử trong mảng
Ràng buộc: 2<=п<=10^6; 1<=k<=10^6; 0<=a(i)<=10^6;
Định dạng đầu ra: In ra số lượng cặp số có tổng bằng k
Input:
4 4
2 2 2 2
Output:
6
Cặp số có hiệu bằng K
Nộp bàiPoint: 1
Cho mảng A gồm N phần tử và số X. Nhiệm vụ của bạn là tìm cặp phần tử A[i] - A[j] = X.
Nếu tồn tại A[i] - A[j] = X đưa ra 1, ngược lại đưa ra -1.
Input Format: Dòng thứ nhất là cặp số N, X; Dòng tiếp theo là N số A(i] là các phần tử của mảng A.
Ràng buộc: ~1 ≤ N ≤ 10^5~; ~1 ≤ X, A[i] ≤ 10^{5}~.
Input 01:
5 4
1 2 3 4 5
Output 01:
1
Giải thích: Cặp số có hiệu bằng 4 là 5 và 1
Input 02:
5 5
1 2 3 4 5
Output 02:
-1
Số nhỏ nhất lớn hơn Ai
Nộp bàiPoint: 1
Cho mảng A gồm n phần tử. Nhiệm vụ của bạn là tìm giá trị nhỏ nhất (phải thuộc mảng A) lớn hơn Ai (i = 0, 1, 2,, n-1). Đưa ra ký tự _ nếu Ai không có phần từ lớn hơn nó. Ví dụ với mảng A = (13, 6, 7, 12) ta có kết quả là (_ , 7, 12, 13).
Định dạng đầu vào: Dòng đầu tiên đưa vào n là số phần tử của mảng A; Dòng kế tiếp đưa vào n số A[i] của mảng; các số được viết cách nhau một vài khoảng trống.
Ràng buộc: 1 <= N <= 10^5; 1 ≤ A[i] <= 10^5.
Định dạng đầu ra: Đưa ra kết quả trên 1 dòng
Input:
9
6 3 9 8 10 2 1 15 7
Output:
7 6 10 9 15 3 2 _ 8
Tìm kiếm nhị phân biến đổi (sắp xếp - tìm kiếm)
Nộp bàiPoint: 1
Cho mảng A có N phần tử là các số nguyên đã được sắp xếp theo thứ tự tăng dần. Hãy viết các hàm với độ phức tạp O(logN):
Tìm vị trí xuất hiện đầu tiên của phần tử X trong mảng, nếu không có in ra -1
Tìm vị trí xuất hiện cuối cùng của phần tử X trong mảng, nếu không có in ra -1
Tìm vị trí xuất hiện đầu tiên của phần tử >=X trong mảng, nếu không có in ra -1
Tìm vị trí xuất hiện đầu tiên của phần tử >X trong mảng, nếu không có in ra -1
Tìm số lần hiện của phần tử X trong mảng sử dụng kết quả trong hàm 1 và 2
Ràng buộc: ~1 \leq N \leq 10^6~; ~0 \leq A[i] \leq 10^6~
Input:
10 1100
10 1000 2172 2921 3400 4185 4639 6096 6244 9102
Output:
-1
-1
2
2
0
Cặp số có tổng lớn hơn K (kỹ thuật sắp xếp - tìm kiếm)
Nộp bàiPoint: 1
Cho mảng a gồm n phăn tử và số nguyên dương k. Đếm số lượng cặp số ai, aj (i != j) có tổng lớn hơn k.
Định dạng đầu vào: Dòng thứ 1 là số lượng phần tử trong mảng và số nguyên dương k; Dòng thứ 2 là n phần tử trong mảng
Ràng buộc: 2<=п<=10^6; 1<=k<=10^6; 0<=a(i)<=10^6;
Định dạng đầu ra: In ra số lượng cặp số có tổng bằng k
Input:
4 5
2 3 4 5
Output:
5
Cặp số có tổng nhỏ hơn K
Nộp bàiPoint: 1
Cho mảng a gồm n phăn tử và số nguyên dương k. Đếm số lượng cặp số ai, aj (i != j) có tổng nhỏ hơn k.
Định dạng đầu vào: Dòng thứ 1 là số lượng phần tử trong mảng và số nguyên dương k; Dòng thứ 2 là n phần tử trong mảng
Ràng buộc: 2<=п<=10^6; 1<=k<=10^6; 0<=a(i)<=10^6;
Định dạng đầu ra: In ra số lượng cặp số có tổng bằng k
Input:
4 5
2 2 2 2
Output:
6