Задать вопрос
El_Dmitro
@El_Dmitro
Школьник мат. школы. 11 класс.

Олимпиадное программирование за 2 дня?

Добрый день.

Я школьник. Вроде связан с программирование давно, но этому занятию совсем безолаберно относился, а когда осознал стало поздно. Не в этом даже суть. Моя задача на текущий момент заработать себе диплом. Идеальная цель олимпиада ИТМО по информатике, но там тоже есть программирование хотя и совсем несложное.
На одно ИТМО я боюсь полагаться, хочется попробовать взять Ломоносова, 2ой уровень, хотя бы чуток далек, как мне кажется, от серьезных олимпиадных контестов, куда мне дорога закрыта. Мои знания очень узкие: реализовать бин. поиск, qsort, слиянием, ДП, Длинная, простейшие структуры данных. Собственно скудный набор. Причем все это я пишу, решаю, реализовываю на очень медленной скорости, с ошибками, долго их пытаюсь от дебажить. Т.е. еще и код сам по себе выходит скверный, некачественный. Даже простые задачи иногда решаю очень громоздко, не эффективно.
Я осознаю, что это все решается временем и тренировками. У меня его катастрофически мало. Я хотел бы у вас узнать, какие есть пособия, может советы, которые смогут мне помогут хотя бы ускорить процесс написания и дебага программ.
Улучшить понимание выполнения, компиляции программ. Я в этом деле по сути профан, но попытаюсь аккуратно свои мысли донести до вас. Т.е. чтобы у меня не было ошибок связанных при работе с типами, т.е. когда идет преобразования short в int, при работе с числами с плавующей. И всякие такие моменты. Есть книга Таненбаума "Архитектура компьютера". Но она дико большая даже для свободного чтения в маршрутке, и там много лишнего, даже если и есть что-то полезное.

И второй вопрос: есть ресурсы informatics.mccme.ru acmp.ru и книга competitive programming.

Informatics - давно с ним работаю, решаю потихоньку задачки. На всякую динамику (Например, Расстояние по Левенштейну), на рекурсию раньше, задачки решал по нескольку дней. Очень долго, и когда на олимпиаде получаю задачи соответственно быстро не могу ничего решить. Как я понял по рассказу друга, он большинство задач тупо решал с другим условием, поэтому проблем особых не возникает узнать метод, а потом его реализовать. У меня проблема в этом всегда. Ну только если "Найдите максимум, посчитайте кол-во всех ..," я понимаю, что, вероятнее, динамика.

acmp.ru - 0 теории, много задач, раньше пытался на нем решать, только после лекций преподавателя, толку 0.

competitive programming - новая книга, вообще не представляю, что можно от нее ждать. Любезно поделился друг, сказал полезно будет. Но я думаю, что с ней нужно много работать, сейчас для меня не лучший вариант.

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

Главная все-таки цель: увеличить время написания и качество кода. Меньше времени на дебаг, меньше ошибок, меньше разбираться в треше, который я пишу, т.е. меньше всякий треш писать.
  • Вопрос задан
  • 3303 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Рост обычно идет так:

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

Но нормальное становление идет так:
Просто пишешь программы. Много. Или много мелких или одну крупную. Решаешь конкретные задачи. Написал свой калькулятор. Написал себе программу, которая выводит расписание в html, написал сайт по сбору статистики матчей в дотку и работаешь с этой статистикой чтобы прикинуть порядок сборки или еще какие-то моменты. Написал свой скрипт бэкапа важных документов. Написал свой конвертер-ресайзер фоток.
Главное чтобы конечный результат выполнения программы был понятен лично тебе, и ты мог сам решать когда он тебя устраивает, а когда допилить.

Между написанием программ читаешь различные книжки, и уже тогда, когда у тебя есть ПРАКТИЧЕСКИЙ опыт написания программ, ты в книжках можешь наткнуться на более удачное решение проблемы, с которой ты сталкивался и уже писал велосипед.

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

Правильный совет тебе уже дали в первом ответе - что нет какой-либо суперовой книжки. Все книжки - относительные, и не смогут сделать за 2 месяца из новичка олимпиадника. Поэтому просто пробуй программить и парралельно читать просто популярные книжки по тому языку, который ты сейчас используешь.
Ответ написан
Комментировать
@MiiNiPaa
Как вам сказали, такой книги нет. И быть не может. Ни одна книга не может покрыть каждый трюк и технологию используемую в программировании. Методы, которые являются официально одобренным способом решить задачу в одном языке, могут быть восприняты как признак плохого стиля и малого опыта в другом. Некоторые не могут быть применены к данному языку вообще; некоторые имели смысл раньше, но считаются вредными сейчас, если ты не пишешь для старых систем; некоторые полезны при каком-то определённом стиле программирования, но бесполезны при другом, причём оба этих стиля широко используются.

Расписывать ли структуру приложения перед тем как приступить к написанию или использовать подход "пишем как придётся, потом отрефакторим"? Оба этих подхода работают. Просто нужно понимать, когда какой использовать. И это подводит к основному.

Программирование это опыт. Никакое количество книжек не сделает тебя программистом если не писать код. Невозможно полноценно понять ни один совет из книжек по проектированию, паттернам, best practice и т.п., если ты ни разу не столкнулся с проблемами, которые они решают. Поэтому: macode.ru
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@vilgeforce
Раздолбай и программист
Ну конечно есть чудо-книга, которая заменит вам многолетний опыт разработки. Только все столь коварны, что не скажут какая же это книга. И поисковые системы данные про нее тоже удаляют моментально. Почему бы вам не подумать о причинах, которые вам помешали найти такую книгу самому?
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
Я школьник.

и там много лишнего

Мне вот это всегда больше всего нравится, до умиления: всяк школьник (или студент) всегда точно знает что и в какой книге лишнее...

Как жаль, что все люди, которые лучше других знают как управлять государством, уже трудоустроены и работают парикмахерами и таксистами!
Ответ написан
Комментировать
@Neonoviiwolf
Flutter developer
Есть серия из 9-ти книг, издательства "Роковая гора".
Ответ написан
Комментировать
master2016
@master2016
Всё нормально.
"Главная все-таки цель: увеличить время написания"

Ну это элементарно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы