Всем привет, есть следующая задача: У нас есть двумерная матрица размер

не более чем 1500 на 750. Каждый элемент матрицы - это значение от 0 до 65536.
Нам дан какой-то числовой числовое промежуток "внутри" от 0 до 65536. То есть, может быть промежуток 25333 - 35000
Нам нужно найти элементы этой матрицы, которые находятся в заданном промежутке и сгруппировать их по признаку соседства в матрице.
Попробую на примере, допустим есть такая матрица и нам дан промежуток 4-5
4 5 2 0 0 0 0 0 0
3 5 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 5 0 0 0 0 0 0 0
0 5 0 0 0 0 0 0 0
Тогда первой областью по соседству будет (y, x) y - номер строки, x - номер столбца:
[[0][0], [0][1], [1][1]]
[[3][1], [4][1]]
Можете подсказать направление, в котором можно копать? Пока в голову лишь приходит васянский алгоритм, при котором мы будет проходить по каждому элементу и если он находится в заданном промежутке, то мы смотрим его соседей, если они находятся также в промежутке, то мы их добавляем. Если выбираю такой метод, то там ещё можно будет добавить оптимизацию на проверку были мы в текущем элементе или ещё нет, но всё это выглядит очень неэффективно? Заранее всем спасибо!

3 ответов

47 просмотров

Выглядит как работающий за n Я бы посоветовал его написать для начала, а потом уже смотреть что-то более продвинутое

Система непересекающихся множеств, UnionFind ?

Либо union find /disjoint set union, либо обход в ширину/глубину.

Похожие вопросы

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта