Cho N đoạn số nguyên [ai,bi]. Tìm 1 số mà số đó thuộc nhiều đoạn số nguyên nhất
VD: N=5
[0:10], [2;3] , [4;7], [3;5], [5;8] => 5
Xin hướng làm bài tập (C++)
Gộp chung a[i] và b[i] vào rồi Sort, đếm xuối đến biến a[i] bất kì tăng biến count lên 1, b[i] bất kì giảm đi 1, kết quả là điểm mà giá trị count cực đại.
2 Likes
- Tìm số nhỏ nhất trong các đoạn số nguyên, gọi là
max
- Tìm số lớn nhất trong các đoạn số nguyên, gọi là
min
- Tạo một mảng có
max - min + 1
phần tử, gọi là mảngDanhSachSo
- Duyệt qua các số trong các mảng, với mỗi số
n
được duyệt thì tăngDanhSachSo[n - min]
thêm 1 - Tìm số lớn nhất trong
DanhSachSo
, index của số đó trongDanhSachSo
cộng vớimin
chính là kết quả cần tìm.
Cho số từ 1 đến 1e10 thôi là hết mem, bó tay
1 Like
Dùng map được mà bác, nhưng mà sợ không gánh nổi độ phức tạp thời gian (quá to!).
Nên chọn cách nào có độ phức tạp chỉ phụ thuộc số đoạn.
1 Like