Задачи на сегодняшнем этапе технокубка мне понравились, как надеюсь многим, но перейдем сразу к сути.
Этот пост я хочу посвятить питонистам. Я и сам таким являюсь) На своем сегодняшнем неудачном опыте, я сегодня пережил проблему — задачи B и D просто заTLились на 2 и 16 тестах соответственно. Такая проблема возникла почти у всех людей, кто засылал эту задачу на питоне. К моему счастью, я владею С++ и смог переписать B и D на плюсы, потратив в общей сложности 15 минут на B и 15 минут на D (в сумме лишних 45 минут штрафа), а также -100 баллов из-за двух TL.
Какие выводу нужно извлечь? Конечно можно обвинить составителей Технокубка, что они виноваты. Задачи (ладно Д, Б должна заходить на Питоне! (это же Б:)). Но винить составителей нельзя. Я часто встречаюсь с тем, что задачи на графы просто не заходят на Питоне. Надо просто перейти на плюсы. Почему я не перешел полностью на плюсы? Да лень просто, потому что пока я задачи быстрее пишу на питоне. Но факт остается фактом, надо все олимпиадные задачи писать на плюсах. Потому что иначе ты часто будешь попадать в такие же ситуации как я.
Возможно, мои слова очевидные, но... Надеюсь это поможет некоторым встать на путь истинный.
Как-то так!
P.S. Учите английский
P.P.S. Ой, в плане учите плюсы!
Питон — говно! Я всё сказал
Я рекомендую вместо того, чтобы кусать локти все таки научиться писать на питоне(это очень просто!) и понять, в каких задачах его можно использовать, а в каких — нет. И писать решения на элегантном и приятном питоне вместо громоздких плюсов и джавы, там, где это возможно.
В этой секции только одни плюсы!
такая многозначная фраза получилась! ахахахахахаха
Питон – это самый лучший язык программирования, который я могу представить. А олимпиады надо писать на C++.
В общих чертах я согласен с тобой о том, что С++ для олимпиадного программирования полезнее, чем Питон...
Но!
Я взял твой код по Б, поставил быстрый ввод-вывод, обернул в main и отослал (это всё занимает не больше 2 минут), и... он зашёл. Работает на PyPy3 за 717 мс из 1000 мс в ограничениях.
Дальше, я посмотрел твой код Д, и заметим, что он работает за квадрат... Как же получилось, что он зашёл на С++?
Всё очень просто: set в Питоне — это хеш-таблица, а не красно-чёрное дерево, как в С++ (там это unordered_set). Поэтому, когда ты ищешь min в set, это работает за линию, итого получается квадрат. В С++ же это log(n).
В итоге, мы плавно подошли к тому, что Питон, на самом деле, хороший язык, и можно без проблем писать решения некоторых задач на нём, если знать, как ускорять код и что на нём делать нельзя (например, set из C++ в Питоне вообще нет). Более того, на Pypy3 иногда залетают даже решения, работающие за 25*10**6 и больше.
Поправочка: В C++ минимум в сете ищется за O(1)
Ок, согласен, правда удаление/добавление всё равно за log(n), поэтому не важно :)
На питоне может писать только виртуоз, он не прощает ошибок. А плюсы для всех, они легко прощают лишний лог в асимптотике ;)
Анекдот!
Идет медведь по лесу, видит — машина горит. Сел в нее и сгорел!!!
Вывод: учите английский
ахахахахахах
Нет, ты не прав. Смотри, сейчас объясню — медведь это bear, машина car. Что получаем? bear burn in car, что оооочень созвучно с bulbunyuk, а он русский то есть нет
Вы бредите?
вообще то, это ты не прав если бы ты не знал английский, то мог перепутать bear и beer, и получилось бы beer burn in car а это уже совсем не похоже на bulbunyuk
Полностью согласен, тоже самое и у меня. Почему тестеры не могли разбить тесты, а не засылать в них 500 строк по 500 символов? Это специально делается, чтобы отсеить всё, что не является C++?
Задал вопрос по задаче B в блоге, в итоге плюсеры просто задизили, на этом сайте кроме C++ почти ничего не используют, потому что топеры на нём пишут, а остальные хомячки берут с них пример.
Могу вас уверить, что специально чтоб отсеить С++ это конечно не делается
Капец умный