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, bc.

Đ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ả ans1ans2.

Độ phức tạp của giải thuật: O(nlogn)


Comments

Please read the guidelines before commenting.


There are no comments at the moment.