[Buổi 16][Sắp xếp & tìm kiếm][ADV] Bài 4: Tối Ưu Hóa MEX Của Mảng
Tối Ưu Hóa MEX Của Mảng
Bối cảnh
Bạn được cho một mảng A có độ dài N. Bạn có thể thực hiện phép toán sau bất kỳ số lần nào:
Yêu cầu
- Chọn bất kỳ chỉ số
i(1 ≤ i ≤ N) và tăngA[i]lên 1 hoặc giảmA[i]xuống 1.
Tìm số lượng phép toán tối thiểu cần thực hiện để làm cho MEX của mảng đạt giá trị tối đa có thể.
MEX (Minimum Excluded) của một mảng là số nguyên không âm nhỏ nhất không xuất hiện trong mảng. Ví dụ:
- MEX của
[2, 2, 1]là0, vì0không xuất hiện trong mảng. - MEX của
[3, 1, 0, 1]là2, vì0và1xuất hiện trong mảng, nhưng2thì không. - MEX của
[0, 3, 1, 2]là4, vì0,1,2và3xuất hiện trong mảng, nhưng4thì không.
Input
Dòng đầu tiên chứa một số nguyên T, số lượng test cases.
Mỗi test case bao gồm nhiều dòng:
- Dòng đầu tiên chứa số nguyên
N— số lượng phần tử trong mảngA. - Dòng thứ hai chứa
Nsố nguyên cách nhau bởi dấu cách — các phần tử của mảngA.
Output
Với mỗi test case, in ra trên một dòng số lượng phép toán tối thiểu cần thực hiện để làm cho MEX của mảng đạt giá trị tối đa có thể.
Ràng buộc
- \(1 ≤ T ≤ 10^4\)
- \(1 ≤ N ≤ 2 × 10^5\)
- \(0 ≤ A[i] ≤ N\)
- Tổng số phần tử \(N\) trong tất cả các test cases không vượt quá \(2 × 10^5\).
Ví dụ 1
Input
3
4
0 0 3 3
3
2 0 1
4
4 4 1 0
Output
2
0
3
Giải thích ví dụ
Test case 1: Bạn có thể chuyển mảng A thành [0, 1, 2, 3] trong hai phép toán và đạt MEX là 4, giá trị tối đa có thể. Các phép toán có thể là:
- Chọn chỉ số 1 và tăng
A[1]lên 1. - Chọn chỉ số 2 và giảm
A[2]xuống 1.
Test case 2: Không thể tăng MEX của mảng thêm nữa.
Test case 3: Bạn có thể chuyển mảng A thành [2, 3, 1, 0] trong 3 phép toán và đạt MEX là 4, giá trị tối đa có thể. Các phép toán có thể là:
- Lặp lại phép toán hai lần trên chỉ số 1 và giảm
A[1]xuống 1 mỗi lần. - Chọn chỉ số 2 và giảm
A[2]xuống 1.
Thông tin học tập
- Buổi: B16
- Concepts: sorting, ordered pairing, difference sums
- Giới hạn kiến thức: B01-B16
- Time limit: 2 seconds
- Memory limit: 64 MB
- Point: 25
Comments