Okazało się, że zadanie nie jest zbyt trudne. Konstrujemy graf, gdzie wierzchołek, to pole (i,j) i dajemy krawędź tam, gdzie możemy skoczyć skoczkiem z pola (i,j) oraz oba pola nie mogą być zajęte. Zauważmy, że jak skaczemy skoczkiem z pola białego, to skoczymy na pole czarne, jak skaczemy z pola czarnego, to skoczymy na pole białe, w takim razie skonstruowany graf jest dwudzielny, gdzie pola białe, to zbiór A, pola czarne to zbiór B.
Wynik to maksymalny zbiór wierzchołków zawarty z zbiorze z grafu wejściowego, w którym żadne dwa z tego zbioru nie są połączone krawędzią. Zauważmy, że liczebność tego zbioru to:
liczba wszystkich wierzchołków w grafie - max skojarzenie.
Więc puszczamy na takim grafie maksymalne skojarzenie. Trzeba być uważny, bo N <= 200, czyli możemy mieć nawet 40000 wierzchołków oraz 40000*8 krawędzi i puszczenie zwykłego algorytmu skojarzenia z break-iem, gdy znajdziemy ścieżkę powiększającą może być zbyt wolne(i jest, mi weszło na 70pkt). Jak usuniemy break-a, gdy znajdziemy ścieżkę powiększającą to wchodzi na 100 z bardzo dużym zapasem. Można dodać random shuffle na wierzchołkach i krawędziach, żeby nie było złościwego testu od orgranizatorów, który się zkwadraci, ale w tym zadaniu nawet nie było to potrzebne, co nie zmienia faktu, że moim zdaniem warto to zrobić.