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

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

Как видно из цвета моего ника, я новичок в спортивном программировании. Начал примерно год назад, но серьезно увлекся после того, как попал на ICL-2013. Но суть не в этом. Сейчас в основном я стараюсь сдавать задания на Python, но часто происходит так, что у меня выходит тайм лимит, даже если по самым приближенным прикидкам все нормально, и даже если используются быстрые алгоритмы. Но стоит переписать код на С++, ничего не меняя, и все хорошо. Вопрос к вам, опытные питонисты, есть ли какие-то хитрости или советы, как дать питону волшебный пендель для ускорения? Или мне наедятся на Иисуса? Я понимаю, что не я 1 задаю подобный вопрос, но все-таки.

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

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

У вас в посылках единственная задача, которая упала по TL, и та — сдана на C++.

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

    Вот буквально сегодня на Timus Online Judge бинарный поиск в массиве не проходил по времени, причем не хватило 15-20 мс.

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

      там просто если больше лимита времени выполняется программа, то она завершается через 15-20мс

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

        Интересно. То есть фактически она работала дольше?

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

          Думаю в вашем бин. поиске есть вечный цикл, но вам по коду виднее.

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

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

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

    Да, есть такое, если весь код завернуть в отдельную функцию, а потом ее вызвать, то обычно получается в 1.5 раза быстрее.

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

Вот тут есть некоторые хорошие советы.

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

Спасибо откликнувшимся и поддержавшим :-)