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

Автор I_am_Drew, 3 года назад, По-русски

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

Этот пост я хочу посвятить питонистам. Я и сам таким являюсь) На своем сегодняшнем неудачном опыте, я сегодня пережил проблему — задачи B и D просто заTLились на 2 и 16 тестах соответственно. Такая проблема возникла почти у всех людей, кто засылал эту задачу на питоне. К моему счастью, я владею С++ и смог переписать B и D на плюсы, потратив в общей сложности 15 минут на B и 15 минут на D (в сумме лишних 45 минут штрафа), а также -100 баллов из-за двух TL.

Какие выводу нужно извлечь? Конечно можно обвинить составителей Технокубка, что они виноваты. Задачи (ладно Д, Б должна заходить на Питоне! (это же Б:)). Но винить составителей нельзя. Я часто встречаюсь с тем, что задачи на графы просто не заходят на Питоне. Надо просто перейти на плюсы. Почему я не перешел полностью на плюсы? Да лень просто, потому что пока я задачи быстрее пишу на питоне. Но факт остается фактом, надо все олимпиадные задачи писать на плюсах. Потому что иначе ты часто будешь попадать в такие же ситуации как я.

Возможно, мои слова очевидные, но... Надеюсь это поможет некоторым встать на путь истинный.

Как-то так!

P.S. Учите английский

P.P.S. Ой, в плане учите плюсы!

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

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

Питон — говно! Я всё сказал

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

    Я рекомендую вместо того, чтобы кусать локти все таки научиться писать на питоне(это очень просто!) и понять, в каких задачах его можно использовать, а в каких — нет. И писать решения на элегантном и приятном питоне вместо громоздких плюсов и джавы, там, где это возможно.

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

    В этой секции только одни плюсы!

    такая многозначная фраза получилась! ахахахахахаха

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

    Питон – это самый лучший язык программирования, который я могу представить. А олимпиады надо писать на C++.

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

В общих чертах я согласен с тобой о том, что С++ для олимпиадного программирования полезнее, чем Питон...

Но!

Я взял твой код по Б, поставил быстрый ввод-вывод, обернул в main и отослал (это всё занимает не больше 2 минут), и... он зашёл. Работает на PyPy3 за 717 мс из 1000 мс в ограничениях.

Дальше, я посмотрел твой код Д, и заметим, что он работает за квадрат... Как же получилось, что он зашёл на С++?

Всё очень просто: set в Питоне — это хеш-таблица, а не красно-чёрное дерево, как в С++ (там это unordered_set). Поэтому, когда ты ищешь min в set, это работает за линию, итого получается квадрат. В С++ же это log(n).

В итоге, мы плавно подошли к тому, что Питон, на самом деле, хороший язык, и можно без проблем писать решения некоторых задач на нём, если знать, как ускорять код и что на нём делать нельзя (например, set из C++ в Питоне вообще нет). Более того, на Pypy3 иногда залетают даже решения, работающие за 25*10**6 и больше.

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

    Поправочка: В C++ минимум в сете ищется за O(1)

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

      Ок, согласен, правда удаление/добавление всё равно за log(n), поэтому не важно :)

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

На питоне может писать только виртуоз, он не прощает ошибок. А плюсы для всех, они легко прощают лишний лог в асимптотике ;)

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

Идет медведь по лесу, видит — машина горит. Сел в нее и сгорел!!!

Вывод: учите английский

ахахахахахах

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

    Нет, ты не прав. Смотри, сейчас объясню — медведь это bear, машина car. Что получаем? bear burn in car, что оооочень созвучно с bulbunyuk, а он русский то есть нет

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

      Вы бредите?

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

      вообще то, это ты не прав если бы ты не знал английский, то мог перепутать bear и beer, и получилось бы beer burn in car а это уже совсем не похоже на bulbunyuk

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

Полностью согласен, тоже самое и у меня. Почему тестеры не могли разбить тесты, а не засылать в них 500 строк по 500 символов? Это специально делается, чтобы отсеить всё, что не является C++?

Задал вопрос по задаче B в блоге, в итоге плюсеры просто задизили, на этом сайте кроме C++ почти ничего не используют, потому что топеры на нём пишут, а остальные хомячки берут с них пример.