Проблема: у вас есть сетка N x N (1 < = N < = 10^9). Каждый квадрат может быть пройден или заблокирован. Есть M (1 < = M < = 100) препятствия в сетке, каждая из которых имеет форму 1xK или Kx1 полосы квадратов сетки. Каждое препятствие задается двумя конечными точками (A_i, B_i) и (C_i, D_i), где A_i = C_i или B_i = D_i. Вам также присваивается начальный квадрат (X, Y). Вопрос в том, сколько квадратов доступно от стартовой площади, если вы можете идти влево, вправо, вверх и вниз, и вы не можете преодолевать препятствия?Сжатие координат
Я попытался решить эту проблему с помощью BFS, но для очень больших размеров сетки это слишком медленно. Затем я услышал о сжатии координат. Может кто-нибудь объяснить, что такое сжатие координат, как оно реализовано, где я могу узнать больше об этом?
Как вопрос, так и ответ (!!) находятся в http://www.quora.com/What-is-coordinate-compression –
Остерегайтесь закрытых пончиков. – greybeard