|
|
|
|
|
|
|
| 1 Винк В В, 01 октября 2019 г. 18:12:38 |
| Выход когда кончатся изменения. Для эффективной работы нужно бегать туда - сюда. Ещё нужно учесть, что могут быть пустые столбцы, даже все.
|
|
|
| 2 Винк В В, 01 октября 2019 г. 18:11:10 |
| Создадим структуру Фрагмент для массива или вектора. Поля : нижняя_грница, верхняя_граница, номер_столбца, номер_сегмента, список_связей. Нижняя_грница = L - 1, Верхняя_граница = R, номер_столбца заносятся при считывании данных. Номер_сегмента = 0, значит пока не определён. Получить список_связей с фрагментами из соседних столбцов можно так же на этапе считывания данных. Для этого в функию lower_bound подаём набор нижних_границ из предыдущего столбца и верхнюю_границу данного Фрагмента, а в функцию upper_bound - набор верхних_границ из предыдущего столбца и нижнюю_границу данного Фрагмента. Получаем полуинтервал Фрагментов из предыдущего столбца связанных с текущим. Имея список_связей рекурсивно находим номер_сегмента для каждого Фрагмента. Для каждого Сегмента нужно найти величину его смещения вниз, пусть X. Сначала всем X[i] прсиваиваем infinity, например 10^7. Потом, в бесконечном цикле, бежим по Фрагментам и изменяем X[номер_сегмента] с учётом того, что находится под ним. Выход когда кончатся изменения. Д
|
|
|
| 3 Камынин Иван Анатольевич, 10 июня 2017 г. 2:14:08 |
| Очень сложная задача, куда сложнее многих с сложностью большей чем у этой :) Поставьте ей 90, что-ли...
|
|
|
Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!
| | | |