Мне надоело. Ребят, помогите пожалуйста. Хочу участвовать в олимпиадах по

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

12 ответов

24 просмотра

Нарешивать задачи

Формально опиши, что требуется в задаче.

https://codeforces.com/blog/entry/62730

Есть такая штука, как уровни таксономии Блума. У меня в школе были девочки-отличницы, которые писали отличные конспекты (ручками трёх разных цветов!), зубрили и рассказывали что просто от зубов отскакивало, но ничего не понимали из того, что рассказывают. Это один из самых низких уровней таксономии Блума. Даже пересказ своими словами и то лучше. Чтобы перейти на более высокий уровень нужна практика. https://www.youtube.com/watch?v=y7169jEvb-Y&t=106s При этом важно идти постепено от простых примеров к более сложным. Нельзя так просто взять и после изучения базового алгоритма на какую-то тему1 и второго базового алгоритма из темы2 взять и сразу решить сложную задачу в которой оба базовых алгоритма будут соединены в общее целое. Сначала нужно набить руку на каком-то определённом сорте задачек. Допустим взяли тему binary search - и решите пару десятков задач. И только после этого вам получится решать задачи которые на эту тему попадутся на олимпиадах. Т.е. вот это стремление сразу ухнуть в competetive programming без должной тренировки -- это только получать синяки и душевные травмы. Ведь вам же понятно, что новичков в спортзале не заставляют сразу жать штангу в сто кило, а ставят технику на пустом грифе, почему с программированием очень хочется надорваться? Если очень хочется войти в тему - окей, вот пара ссылок, вам хватит на много месяцев вперёд: https://drive.google.com/file/d/1TSX395WuwyjzcchvLgSo4vhj_FQflMpi/view https://codeforces.com/blog/entry/53341?f0a28=1 И не льстите себе, начните с atcoder и codechef - пока не будет стабильно выходить решить задачи A и B вам не стоит пытаться выбираться не в свою весовую категорию.

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

Il- Автор вопроса
Andrey Kruglov
Есть такая штука, как уровни таксономии Блума. У м...

Как вы точно сказали про душевные травмы

Evgenii Zheltonozhskii🇮🇱
atcoder это типа просто?)

Я имел ввиду одна из первых рекомендаций из документа: решать A и C с AtCoders Beginner Contests Так-то вы правы и на любом сайте есть место для задач любого уровня сложности. Возможно, недостаточно чётко объяснил из-за нехватки времени.

Многие рекомендуют, но по крайней мере AGC довольно жёсткие

Evgenii Zheltonozhskii🇮🇱
Многие рекомендуют, но по крайней мере AGC довольн...

Мне казалось, что у них уровень авторов задач очень высокий. Даже когда смотришь на простые задачи, они... бывают разные

Чисто из интереса, какая у вас мотивация этим заниматься?

Evgenii Zheltonozhskii🇮🇱
https://codeforces.com/blog/entry/62730

Честно говоря, я пытался это применить к задачам из недавнего отборочного технокубка (задача B, даны n вершин, даны m условий, что b не может лежать на кратчайшем пути из a в c, и надо построить дерево, которое будет удовлетворять m условиям. и решение простое — найти такую "свободную" вершину, которая может лежать на пути между любыми вершинами, все оставшиеся вершины — дети "свободной вершины". доказательство решения тривиально, но как из даже формального условия прийти к решению. мне кажется, это опыт и не более. но уже порекомендовали нарешивать больше)

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

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта