Блог пользователя Wild_Hamster

Автор Wild_Hamster, 10 лет назад, По-русски

Есть матрица размером n на m, заполнена нулями и единицами. Нужно найти найбольший по площе прямоугольник, который содержит только единицы. Если можно, подскажите с решением и возможно местом, где эта задача находится на онлайн ресурсе.

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

»
10 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

быть может это поможет Вам: Your text to link here...

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    спасибо, после 40 минут просмотра и разбора я вроде бы понял эту статью. Но у меня созрел вопрос: чем отличается stack от vector-а? Вроде бы и там и там с одной стороны засовывают и с одной забирают.

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 4   Проголосовать: нравится -10 Проголосовать: не нравится

      Меня часто пытаются переубедить, но мне кажется, что std::stack побыстрее, чем std::vector. Всё-таки std::stack — это не урезанная версия std::vector, и было бы логично реализовать структуру с меньшим функционалом оптимальнее, чем со сложным.

      (Правда, это урезанная версия std::deque...)

      • »
        »
        »
        »
        10 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

        Лол. Что там убеждать-то, и так видно.

        http://codeforces.net/contest/490/submission/8894056 http://codeforces.net/contest/490/submission/8894061

        Разница только в параметрах шаблона стека в дереве фенвика. По умолчанию при чем там deque, если не указать иное.

        P.S. На segment_tree_t не смотри, он с прошлых посылок остался, с ним даже со вектором внутри стека не заходит.

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Было бы логично, но так не делают.

        Сравнение не совсем корректно.

        std::stack не контейнер, а адаптер. Стандартные контейнеры это std::list, std::vector и std::deque. "Под капотом" у стека всегда есть какой-то контейнер, по умолчанию в g++ это deque.

        То есть по сути сравнивая stack и vector ты сравниваешь deque (при условии того, что его пользуют как стек) и vector (при тех же условиях).

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        В чём же заключается сложность функционала std::vector?

    • »
      »
      »
      10 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Если нужны только операции взятия и удаления, то лучше использовать стек, ИМХО

      Вектор только если нужны еще какие-либо функции

»
10 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

где эта задача находится на онлайн ресурсе
"Чистую" задачу я не нашёл, но вот эта задача сводится к поиску максимальной подматрицы.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Вот похожая задача на топкодере: ссылка

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

сайт contest.bsuir.by там [Practice. Dynamic programming] problem I

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

сайт [practice.Dynamic programming], задача I.мистер средний

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится
  • »
    »
    10 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

    вот, спасибо, когда-то решал эту задачу, вспоминал о ней, но не мог найти ее и своего решения. Но решал я эту задачу и совсем не так, как написано на е-максе, а так: линк. Но думаю, для прямоугольников такой метод не прокатит.

    Хотя если хранить в каждой клетке динамики 2 стороны прямоугольника, то наверное может пройти.