Một bài nhánh cận khó

  • Đề bài: https://codeforces.com/group/FLVn1Sc504/contest/274856/problem/O

  • Code: https://ideone.com/QrBNuH

  • Các cận đã đặt trong code hiện tại:
    (5-(j+1)) số nhỏ nhất <= sumrow[i]-x <= (5-(j+1)) số lớn nhất
      A1          C1        A2
    (5-(i+1)) số nhỏ nhất <= sumcol[j]-x <= (5-(i+1)) số lớn nhất
      B1          C2         B2
    => max(1, C1-A2, C2-B2) <= x <= min(25, C1-A1, C2-B1)
    Khi đó thay vì chọn x là số từ 1 đến 25 thì chọn trong đoạn [max(1, C1-A2, C2-B2); min(25, C1-A1, C2-B1)]
    Tới đây chỉ ăn được 60/100đ

  • Nhận xét: khi các dòng hoán vị lẫn nhau thì không làm thay đổi tổng trên các cột (tương tự cho cột). Mà mình chọn x từ nhỏ tới lớn nên sort lại các dòng và cột tăng dần, sau khi tìm được nghiệm thì ánh xạ ngược lại các vị trí cũ.
    Tới đây chỉ ăn được 85/100đ

A/c cho e hỏi bài này còn có thể đặt cận ntn nửa để ăn full test ạ? :disappointed:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?