Разбор добавил Александр Чистяков
Первое утверждение, помогающее анализировать подход к решению данной задачи: каждый нарисованный цикл однозначно определяет некоторую полиминошку (4-связную фигурку из клеточек) не содержащую дырок.
Например:
..**..
.**..*
******
*.**..
Таким образом, очевидное решение на 40 баллов:
перебрать все возможные черно-белые раскраски прямоугольника (всего 2^(M*N) вариантов) и для каждой за O(M*N) проверить: является ли данная фигура требуемой полиминошкой.
Рассмотрим теперь полное решение данной задачи:
Маленькие ограничения на ширину прямоугольника (M<9) посдказывают идею применения профильной динамики вдоль стороны длины N.
При разрезании некоторой полиоминошки на горизонтальные полоски высоты 1 мы получим полоски, состоящие из групп '.' (пустых клеток) и '*' (закрашенных клеток). Будем закрашивать одинаковым цветом группы, которые соединяются сверху от полоски, и разными цветами, которые пока что не соединены между собой.
Набором профилей в данном решении будет множество всех возможных минимальных лексикографически раскрасок таких полосок:
Для M = 6:
-1-1-2
--111-
1-22-1
------
1-2-33
Являются профилями, а
-1112-
-2-1-2
-2-2-1
не являются.
Например, рассмотрим следующее преобразование полиоминошки в раскраску:
...**..
.*.*...
.***.*.
******.
*.**...
---11--
-1-2---
-111-2-
111111-
1-11---
Запустив генератор всех возможных профилей, получим что даже при M = 8 их количество P < 1000,
Поэтому решение за N * P^2 укладывается по времени.
Теперь, используя профильную динамику, будем считать сколько существует полиоминошек, оканчивающихся на текущей строчке профилем p: увеличим на 1 количество у профилей в котрых каждый цвет встречается только 1 раз (например, 11-222-3); приплюсуем значения всех совместимых профилей с предыдущей строки; к глобальному счётчику, в котором насчитываем ответ, прибавим значения всех профилей, состоящих только из 1 (например, 1--111-).
Осталось обсудить самую проблемную в реализации часть решения - критерий совместимости профилей. Для этого придётся вручную рассматривать определённый набор случаев. Вот самые базовые и очевидные из них:
1)не должно встретиться квадрата 2*2 с перекрестной раскраской:
--1-
-1-1
2)Один цвет не может раздваиваться:
1111
-1-2
1--1
11-2
3)Две одноцветных группы не могут объединяться в одну:
--11-1
1-2222
Остальные случаи оставим для самостоятельного рассмотрения (всего их около 5).
Единственное отметим, что при M равном 7 или 8 появляется новый способ образования дырок в полиминошке:
1-222-1
111-111
В новой игре "Closed Loops 7" игрокам предлагается клетчатая таблица \(N\) на \(M\) клеток. Ход состоит в том, что очередной игрок рисует цикл - замкнутую линию без самопересечений, идущую только по сторонам клеток. Каждый цикл можно нарисовать только один раз за всю игру (при этом, конечно, не запрещается рисовать циклы, пересекающиеся с уже нарисованными). Игроки ходят по очереди. Выигрывает тот, кто рисует последний возможный цикл. К примеру, если \(N=2\), \(M=1\), то циклов всего три и игрок, делающий третий ход, выигрывает.
Вася позвал \(K-1\) друзей поиграть с ним. Чтобы произвести впечатление, он непременно хочет выиграть. Для этого ему нужно узнать, каким по счету игроком он должен быть, чтобы гарантированно одержать победу. Вася наслышан о ваших успехах в программировании, и за помощью он обратился именно к вам.
Выходные данные
Выведите одно число от 1 до
\(K\) - каким по счету игроком должен быть Вася, чтобы выиграть.
Примечания
Тесты состоят из трёх групп. В этой задаче нет off-line групп.
- Тесты 1 и 2, из условия, оцениваются в 0 баллов.
- Тесты 3--15. \(N \cdot M \le 24\). Эта группа оценивается в 40 баллов, баллы начисляются только при прохождении всех тестов группы.
- Тесты 16--42. Полные ограничения, группа оценивается в 60 баллов. Баллы начисляются только при прохождении всех тестов группы.