Editorial for VQ22 Tìm kiếm
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Tổ chức dữ liệu:
- Mảng pair<int,int> d[100000] để lưu thời điểm và số tàu trong nhóm khi tới khảo sát băng k:
- d[i].first – thời điểm tới khảo sát băng k,
- d[i].second – số tàu trong nhóm,
- Mảng int64_t e[100000] *– lưu tổng số tàu cùng khảo sát băng *k ở từng thời điểm khi có tàu khảo sát băng này,
- Biến lưu kết quả: int64_t ans1=0,ans2=0;
Mỗi nhóm được đặc trưng bởi 3 tham số a, b và c.
Điều kiện để nhóm khảo sát băng k:
- * a ≤ k,*
- * (k-a)%b==0.*
Duyệt tất cả các nhóm, với mỗi nhóm thỏa mãn các điều kiện trên:
- Tích lũy số tàu trong nhóm vào ans1 (ans1+=c;)
- Nạp cặp giá trị ((k-a)/b,c) vào d.
Sắp xếp lại mảng* d* theo thứ tự tăng dần của d[i].first,
Nhóm số lượng tàu khảo sát băng k ở cùng một thời điểm vào mảng e,
Tính ans2 = max{~e_i~}, i=0, 1, 2, . . .
Đưa ra các kết quả ans1 và ans2.
Độ phức tạp của giải thuật: O(nlogn)
Comments