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

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

Всем доброго времени суток!

Я начал заниматься программированием в восьмом классе, сейчас я в десятом. Раньше решал задачи на сайте acmp.ru, сейчас же, с архива и тренировок на CF (И уделяю этому не мало времени). Но как вы можете заметить по моему рейтингу, прогресс довольно-таки маленький, точнее, его практически нету. В связи с этим, хотел бы услышать ваши мнения: "Как начать эффективно заниматься (Как прокачаться?)?"

Заранее благодарю!

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

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

ЛКШ)

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

    А без курсов?

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

    В ЛКШ в основном алгоритмам учат, а не умению решать задачи, где они не требуются. А стать, например, сиреневым без алгоритмов — это реально.

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

Учи алгоритмы(можешь отсюда e-maxx.ru), логику попробуй усилить.
Этот сайт тоже подойдет для тренировок informatics.mccme.ru
А ну и самое главное, про что я обычно забываю))) после контеста обязательно дорешивай задачи которые не смог решить(обычно всегда на контесты есть разборы и авторские решения).

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

Может это покажется для тебя очевидным, но решай сложные задачи, которые ты никогда не решал и не забивай на них. Составь определённый график(timetable) для себя. Скажем типа, на эту тему я решу 5 задач, а на эту 6. В таком духе. Решая задачи своего уровня и даже ниже, прогресса никакого не будет. Решая задачи по графику то у тебя создается такое чувство долга. Типа надо обязательно решить. решая какую нибудь задачу получив WA, не смотри сразу на тесты или на авторское решение и на разбор. Если задача не решается вот уже 3-4 дня, то тогда и только тогда можешь посмотреть разбор. Если каждую задачу решать так как я описал,то этот стиль решения задач войдёт в привычку. И это хорошо!

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

    Вы сами тоже так делаете?

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

    Скажем типа, на эту тему я решу 5 задач, а на эту 6.

    Только вот большинство задач трудно отнести к какой-то конкретной теме.

    Если задача не решается вот уже 3-4 дня, то тогда и только тогда можешь посмотреть разбор

    А какой смысл тратить на задачу 3-4 дня? Разве что это какой-то Long contest... Это ведь не какая-то марафонская задача, а обычный АСМ — задача, которую нужно просто знать/уметь.

    И это хорошо!

    Чем именно? В чем преимущество такого подхода? В формировании дисциплины, в скорости роста навыков, в разностороннем развитии, в чем-то еще?

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

      Согласен, на начальном уровне не нужно долго думать над задачами — после пары часов надо читать разбор.

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

    Не думаю, что решать задачи из чувства долга — это хорошая идея. Меня, например, затягивает. Бывает, могу не есть часов 5-6, пока задачу не сдам.

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

    Не думаю, что сидеть по несколько дней над задачей — отличная идея. Обычно, если за несколько часов непрерывного размышления в голову ничего не пришло, то, скорее всего, не прийдет никогда. Для начинающих это особенно актуально — они могут просто не знать про структуру данных/алгоритм, которыми решается данная задача. По своему опыту говорю.

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

Решай задачи. Помогает :)

Вспоминая то, как я "качался" (не могу сказать, что мне удалось достичь достаточно высокого уровня, но надеюсь, что всё ещё впереди) — вначале, когда меня просто веселило решение задачек, но каких-то алгоритмов, даже самых базовых я не знал (точнее, какие-то знал, какие-то нет, всё это смешивалось в кашу, хотелось иметь хоть какую-то структуру в голове), достаточно много времени проводил на http://informatics.mccme.ru. Именно там я познакомился с "базой". Это было полтора года назад.

Потом я решил заняться чем-то более продвинутым и стал прорешивать http://acm.timus.ru. У меня не получалось, например, просто изучать алгоритмы с е-макса подряд, в связи с чем я решил, что решаю задачи с тимуса подряд и когда какая-то задача требует продвинутого алгоритма, вот тогда и только тогда я иду на е-макс и изучаю его :) Кроме того, параллельно старался участвовать в кф и иногда (впрочем, достаточно редко) в других онлайн-соревнованиях. Такой подход имел как преимущества, так и недостатки, но в целом я всё же доволен.

И ещё, очень хорошо, когда тебе есть, с кем обсудить задачи. Так на порядок проще узнать о всяких вещах, которые как бы "общеизвестны", а возможно и о чём-то более крутом. Я именно таким образом узнал про такие замечательные вещи, как потоки, DSU, дерево отрезков, корневая декомпозиция, всякая магия с битмасками, суффиксный автомат, Ахо-Корасик, дерево палиндромов, в конце концов :) Ну и много-много всяких других трюков, которые в дальнейшем бывали полезны. Да и самому что-то объяснить другому бывает полезно — может и сам поймёшь то, что рассказываешь.

Насчёт дорешки чего-то порекомендовать не могу. Лично я обычно дорешиваю только если задача окажется особо интересной. Скорее всего, такая позиция весьма неправильна, не следует её придерживаться :)

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

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

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

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

Как начать эффективно заниматься?

Как ни парадоксально, но нужно начать учиться. Тупого прорешивания сотен и тысяч задач для повышения уровня недостаточно.

Стоит задать себе вопрос: "А что я делаю не так?", и развить его.

Почему я слил вот этот контест?
А почему этот?
А вот этот?
А нет ли какой-либо общей причины?
Я такие задачи никогда не решал. А может быть, я просто забыл?
У этого человека рейтинг больше. А в чем он меня превосходит?
Я сдал на ACMP столько-то задач. А что у меня осталось после этого в голове?
...

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

    Да и вообще по жизни такой метод применять очень неплохо. А так лучше подольше подумать над задачей, убрать все вопросы в ней, иначе непонимание так и будет тянуться. И потом будет после контеста: ну я же знаю dfs, но почему тут не применил? Именно потому что нужно чётко понимать принцип работы, именно понять. Лучше пусть поменьше будете знать, но качественнее. Вроде бы банально, но пока на себе не проверите, не узнаете.