Editorial for 1964: THE ROOOOOK


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.

В цій задачі скористаємося максимальним паросполученням.

Вершини в першій долі будуть позначати вертикалі, а в другій — горизонталі.

ROOKs будуть позначати ребра. ROOK, що розміщена в позиції ~(x_i, y_i)~, з'єднує ребром вершину ~x_i~ першої долі та ~y_i~ другої долі.

Оскільки в максимальному паросполученні одна вершина не може бути з'єднана з більше ніж одним ребром, на кожній вертикалі або горизонталі буде не більше однієї ROOK.

Варто зауважити, що в цій задачі хорошим рішенням є використати деякі оптимізації стосовно алгоритму куна:

Запускати пошук з половини, де є менше вершин.

Перед запуском основного алгоритму розставити деякі ребра жадно, а потім покращити рішення алгоритмом, це прискорить роботу алгоритму.


Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.