Pull to refresh
2
0
Send message

Динамическое программирование. Классические задачи

Reading time8 min
Views323K
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

Во многих олимпиадных задачах по программированию решение с помощью рекурсии или полного перебора требует выполнения очень большого числа операций. Попытка решить такие задачи, например, полным перебором, приводит к превышению времени выполнения.

Однако среди переборных и некоторых других задач можно выделить класс задач, обладающих одним хорошим свойством: имея решения некоторых подзадач (например, для меньшего числа n), можно практически без перебора найти решение исходной задачи.

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →
Total votes 105: ↑97 and ↓8+89
Comments72

Бесплатное продвижение. Основные методы и их работоспособность

Reading time4 min
Views6.1K
В данной статье мы рассмотрим методы бесплатного продвижения, которые помогли именно нам.
Рынок бесплатной раскрутке на самом деле не велик, как может показаться. Многочисленные статьи о том, что раскрутить ресурс в интернете можно быстро, качественно и бесплатно – миф. Понятие «быстро, качественно и бесплатно» в отношении чего угодно – миф. Годами ранее, возможно, еще и существовали ресурсы или способы, позволяющие бесплатно заявить о себе, сейчас — нет. Все ресурсы с открытым доступом давно обзавелись антиспамом, все остальные — ценником, и цены, с уверенностью заявляем, не хилые. Было решено искать бесплатные и обязательно рабочие способы заявить о себе.

Спустя определенное время, способы, которые, по крайней мере, выглядели вполне жизнеспособными, нашлись:

— в блоге иностранного разработчика, говорилось о сайте reddit.com, разработчик утверждал, что сайт принес ему более 300 за несколько дней.
— Как мы уже рассказывали, многие хвалили пресс-релиз.
— По нашему мнению, потенциал имеет инстаграм.

Итак, подробнее о каждом способе.
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments3

Лайфхаки в краудфандинге

Reading time3 min
Views7.2K
Сегодня привлечение инвестиций в проект с помощью краудфандинговых платформ стало рабочей практикой. Люди готовы поддержать проект со стоящей идеей, решающей существующие проблемы. Но каким же принципам следует придерживаться при составлении проекта?

image

Недавно, я участвовал в запуске проекта на одной из краудфандинговых площадок. К запуску проекта мы подошли очень серьезно: проштудировали все сайты, связанные с краудфандингом, продвижением и правильным оформлением статей. И мне хотелось бы поделиться некоторым опытом, который мы скопили за время подготовки, в виде нескольких лайфхаков.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments4

40 ключевых концепций информационных технологий доступно и понятно

Reading time16 min
Views159K
Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

Важные замечания:
  • Пункты с неуказанным источником написаны мной самостоятельно. Поправьте меня, если вы заметите какие-то неточности. Предложите лучшую аналогию, если это возможно.
  • Заголовки ссылаются на соответствующие им статьи в Wikipedia. Пожалуйста, читайте эти статьи для более серьезных и детальных объяснений.
  • Аналогии — отличный способ объяснить материал, но они не идеальны. Если вы хотите по-настоящему понять перечисленные концепции, вам следует начать с фундаментальных азов и рассуждать, исходя из них.

Также зацените эту инфографику (вариант на русском), если вы просто начинающий программист.
Читать дальше →
Total votes 104: ↑96 and ↓8+88
Comments37

Интерактивная карта торгового центра на HTML5 canvas

Reading time11 min
Views35K

Введение


Заказчиком была поставлена следующая задача – показывать на картах торговых центров статистику по посещаемости магазинов, использованию эскалаторов, лифтов и коридоров. Карту нужно уметь размечать — указывать точки, где показывать статистику и какую конкретно статистику. И, естественно, показывать эту статистику для выбранного периода времени и фильтров. Откуда берутся и где хранятся данные – отдельная большая тема, за скобками данной статьи.

Раз плюнуть, скажете вы – берём векторную карту торгового центра в svg и дополняем её данными. Красиво, современно, быстро. Даже есть готовые решения типа jVectorMap.

Только вот векторных карт нужных торговых центров нет, есть только те картинки, что предоставлены владельцами центров. Абсолютно разные по стилистике и наполнению. А большое количество центров (порядка 300) не позволяет перерисовать их в вектора быстро и дёшево. Да и добавление новых торговых центров потребует дополнительной работы.

Поэтому было решено использовать HTML5 canvas и для разметки карты, и для показа данных.

Выбор фреймворка


Работать напрямую с canvas API не очень удобно, но уже понапридумана куча инструментов для облегчения работы. Требования к фреймворку в нашем случае:
  1. Объектная модель поверх canvas API.
  2. Способность отрисовывать и масштабировать картинку.
  3. Интерактивность:
    • возможность манипуляции объектами на этапе разметки карты,
    • возможность масштабирования и перемещения по карте.
  4. Возможность экспорта/импорта размеченных объектов.
  5. Наличие детализированных событий.
  6. Высокая скорость отрисовки.

Под рассмотрение попали fabric.js, EaselJS, Raphaël, Paper.js и Processing.js.
Всем требованиям удовлетворяет fabric.js. Учитывая имеющийся небольшой опыт работы с ним, было решено взять его за основу. Далее в примерах использовалась версия 1.4.4.

Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments10

Information

Rating
Does not participate
Registered
Activity