-
Đề bài: https://codeforces.com/group/FLVn1Sc504/contest/274856/problem/O
-
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 ạ?