[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Олимпиадное программирование ->Методика подготовки к IOI 2007 - ... 1, 2, 3, ... 19, 20, 21, 22, 23, 24
Автор Сообщение
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
Вот что я нашёл/понял, чтобы не делать лишние отсылки:

1. Разбирать больше крайних случаев
2. Перед посылкой перечитать решение, проверить ограничения, модули и вывод -1
3. Сделать несколько своих тестов: на крайние случаи и на переполнение чисел (когда где-то вместо int'ов надо было поставить long'и в итоге числа переполняются).
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
2009 +13

A: +2 Не разобрал некоторые случаи. Пришлось долго придумывать тесты, чтобы их отловить.
B: +3 Когда я читал эту задачу, немного не так понял условие. Потом пришёл Виталик, прочитал и рассказал мне правильное условие. Эта задача перешла ему. По началу Виталик разбирал слишком много случаев, и ошибся в одном из них. Потом я подключился, и заметил, что это решение не будет проходить по времени из-за того, что он заходит в уже посещённые вершины дерева несколько раз. Решение небольшое, и переписывать было мало, так что легче мне было переписать эту задачу. Я написал правильное решение, которое проверяет, что в тек. вершину мы ещё не заходили, но я забыл обновлять, что мы зашли в эту вершину. Результат - TL.
C: +1 Тут всё банально. Памяти было мало, и лонги её сжирали. Убрал лонги - получил OK.
D: +1 Забыл файлы
J: +6 1. Забыл файлы
2. Была ошибка в коде, но проблема была ещё и в переполнении лонгов.
3. Переписал на python. Ещё забыл файлы уже в python'е
4. Долго не мог понять в чём же ошибка. По итогу оказалось, что я продолжал (continue) из цикла, если степень первых лонгов меньше l.
5. Не до конца исправил старую ошибку
6. Теперь я продолжал цикл, если u * v < l, хотя я мог их домножить на взаимно простое с ними число

Что же делать: Пока точно не знаю, как не допускать такие ошибки. Они возникают неожиданно, каждый раз в новом месте. Даже самостоятельно проверяя свой код, у меня не получается их находить, потому что они являются частью моей реализации специально (т. е. я их продумываю, думая, что это правильно) (ну, кроме файлов. К ним я скоро привыкну). Может стоит давать Виталику читать мой код и задавать все вопросы подряд, чтобы избегать таких ошибок в самой идее реализации? Или придумывать не 5, а 20 своих тестов?
Михаил Долинский

Темы: 2072
Сообщений: 49900

Мой профиль
Для начала нужно НАВСЕГДА избавиться от ЗАБЫЛ ФАЙЛЫ.
Это несложно.

А ещё надо соблюдать свои же правила


Геннадий Марцинкевич:


1. Разбирать больше крайних случаев
2. Перед посылкой перечитать решение, проверить ограничения, модули и вывод -1
3. Сделать несколько своих тестов: на крайние случаи и на переполнение чисел (когда где-то вместо int'ов надо было поставить long'и в итоге числа переполняются). 


Сколько из них ты сегодня нарушил?

Надо ли добавить НОВОЕ ПРАВИЛО?
(с учётом того, что олимпиада КОМАНДНАЯ)
Михаил Брель

Темы: 6
Сообщений: 49

Мой профиль
IOI 2024

В целом первый день прошел неплохо. У меня не было никаких серьезных тактических ошибок и на все задачи я потратил достаточное количество времени. Конечно, можно было набрать больше баллов по B и C (особенно B). По ней я даже придумал решение на +10 баллов под конец контеста. Однако вся задача это чистейший конструктив, и я считаю, что придумывание таких задач это практически случайность. Это доказывает то, что на контесте только 1 человек решил B полностью, и примерно у 10 других была полная идея (87+ баллов), хотя итоговое решение максимально простое. По C сказать нечего. Я просто не смог ничего придумать за оставшееся время.

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

Я считаю, что основная моя ошибка в этом день заключалась в том, что я потратил очень мало времени, думая над B (самая простая задача 2 дня). Произошло это в основном из-за того, что за 20 минут, которые я над ней думал, я придумал неправильную идею и достаточно долго её писал (примерно час). Когда я понял, что идея неправильная, я решил, что потратил над задачей уже много времени и перешел к другой, хотя на самом деле я думал над ней 20 минут и все что я сделал за это время - придумал неправильную идею.

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

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

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

Темы: 2072
Сообщений: 49900

Мой профиль
Обнаруженные проблемы

- разбегаются глаза (3 задачи, думать полное или решать группы)
- «я пытался сразу придумать какую-то задачу на 100»
- выписать тактику в форуме, например
... прочитать задачу
... понять, что нужно сделать
... проанализировать группы, понять качества группы «упрощающие задачу»
... если какие-то группы придумались - зафиксировать на бумаге
... сделать это для всех трёх задач?
... составить план «сбора лёгких баллов» (<=1 час 30 минут)
... собрать лёгкие баллы (<=2 часа 30 минут)
... увеличить время на обдумывание полных решений/дополнительных групп по задачам (по 30 на каждую)
....... если придумалось писать
....... иначе перейти к другой задаче
- модифицировать тактику по возникновению новых соображений
- научиться отсекать неверные идеи на этапе обдумывания
- стать сильнее
Михаил Брель

Темы: 6
Сообщений: 49

Мой профиль
NEERC 2023

J +1. Случайно отправил не тот код.
M +2. В первой посылке забыл разобрать случай. Перед второй почему-то поспешил и не проверил решение
на одном из сэмплов, из-за чего не заметил глупую ошибку в коде.

Возможно я просто отвык работать в команде, из-за чего был невнимательным, особенно в начале контеста.

Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
Вчера мы с командой решали Питерскую интернет олимпиаду.

Могли лучше. Вот основные проблемы:

1. На задачу D Саша и Виталик не рассказали мне своё решение и стали писать хеши, хотя задача решается не ими. Итог - много потраченного времени и -23 отсылки.

2. Прочитали не все задачи. Кирилл сказал, что К была лёгкой, но никто из нас её не прочитал по двум причинам: 1. Её почти никто не звал. 2. Были другие задачи.
Вывод: надо чтобы кто-то, я или Саша читали ВСЕ задачи, хоть их сдало 0 команд.

3. Саша придумал G, но мы её не писали, т. к. никто на тот момент её не сдал. Я понимаю, что Саша и не должен был её придумывать, но он её придумал. И ладно мы были бы какими-то лохами, которые ничего решить не могут, но мы первые сдали С, а под конец олимпиады и G, но мы тогда уже были не первыми, и потеряли кучу штрафа, а если бы мы доверились Саше, который заметил в этой задаче потенциал, мы бы её сдали. Ведь хотя бы по этой же причине, мы не сдали K, хотя могли.

4. Всё таки у нас много неверных посылок. Пусть пишет и Виталик, но он не бог, и надо стремиться делать меньше отправок. Ключевая проблема лишних посылок - невнимательность.

Вроде бы и всё, что я хотел сказать. Если мы это всё исправим, то мы будем пусть и не первыми, но очень к этому близки.
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
Сегодня я решал город на Яндекс контесте.
Решил 4 задачи за час.
Планировал закрыться, но тут я сел за Е... Я не заметил, что там треугольник Паскаля, и тем более я не знал, как он связан с биномиальными коэффициентами. Поэтому я стал писать решение, которое было впритык по времени, и само собой оно не прошло. Хотя если бы я посидел над F и G, то их бы с лёгкостью придумал и сдал.
Так что вывод: неправильно распределил время, и не знал биномиальное коэффициенты. Теперь я изучил их связь с треугольником, и могу допустить ошибку только по распределению времени.
Почему я не пересел на др. задачи? Ответ таков: времени было мало (3 часа, а на тот момент уже 2), если бы я сел не за ту задачу, то уже бы окончательно просрал время, надо было выбрать ту, которая легче всех. Такой мне показалась Е, но я ошибся...
Михаил Долинский

Темы: 2072
Сообщений: 49900

Мой профиль
Итак через час после начала контеста осталось 3 задачи и 4 часа.
Как предлагаю действовать в такой ситуации.

1. Подумать над каждой из оставшихся задач определённое время.
2. Собрать лёгкие баллы по каждой из оставшихся задач
заодно убедиться, что понимаешь условие каждой из них.
3. Подумать некоторое время над распределением оставшегося времени между оставшимися задачами.
4. Принять обдуманное правильное решение.

Как Гена (Короткевич) решает задачи
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
Прочитал, спасибо. Но поправка: часов всего было 3, и следовательно после часа осталось 2. Я поэтому и запутался, что времени было мало, не знал, что решать, и стал решать первую
Михаил Долинский

Темы: 2072
Сообщений: 49900

Мой профиль
Да в часах я ошибся, извини.
Но тактику принятия оптимального решения это не меняет.
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
О втором дне города.
Всего было 2 часа и 8 задач. Когда я увидел столько, слегка упал, но понял, что они легче первого дня, и быстро (за 45 минут) сдал первые 6. "Вот", - думаю я, - "сейчас закроюсь, наконец-таки". В общем первые 6 задач меня расслабили, читаю 7-ую, думаю, что тоже лёгкий задник, пишу, не проходит. Думаю, порешать 8-ую, вдруг она легче, но она оказалась ещё прикольнее (там был 2sat, надо было подумать, да и я не очень классно решаю 2sat, мало практики было). Решил посидеть на 7-ой. И только под конец контеста (за 10 мин.) я нашёл контр тест, на котором мой задник не работал, а придумал правильный только к концу, к тому же он был сложнее, чем можно было (я придумал ДО, а можно было просто циклом), может подумай я ещё, я бы додумал, но скорее написал бы ДО.

Что могу сказать: я плохо искал тесты, которые не работают на 7-ой задаче. Миша их нашёл сразу, а я только к концу.
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
Теперь о сегодняшнем дне сборов.
Задачи были лёгкими, мы даже их решали, вроде, раньше. Единственно что, у меня никак не заходила С-шка. Я и сетами писал, и ДО-хой, и ссылками (типа СНМ) (правда я не уверен в асимптотике этого способа (точнее в доказательстве), но Миша сказал, что это тоже n*log(n)), но ничего не проходило, что бы я не ставил, какие ускорялки, прагмы и т. д. Я не знаю, что в ней может не проходить, хотел бы взглянуть на Мишино решение, сравнить, может я что забыл, или не знал какую-то прагму (было бы весело)...
Геннадий Марцинкевич

Темы: 2
Сообщений: 88

Мой профиль
Пупу-пуууу...
Я посмотрел Мишино решение, оно гораздо красивее моего, у меня лишние массивы, функции, а Миша их все реализовал в одном. У меня лишние ifы, всё сделано не очень. Видимо, у меня большая константа, а у сетов и ДОшиков была ещё большая. Скорее всего задача сделана для запихивания, или под другую, более быструю тест-систему.

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

Темы: 2072
Сообщений: 49900

Мой профиль
Да, у тебя кривая реализация очень часто бывает.
Об этом говорили все крутые олимпиадники, которые видели твой код.

И опять «кривой»(непродуктивный) вывод - «она сделана для запихивания».

Правильный вывод надо "научиться красиво писать".
Миша писал решение 15 минут: 9.31-9.46 и сдал с первой попытки.
Ты писал 3.5 часа и не сдал.

Надо "разобрать на запчасти" Мишин код и взять на вооружение все его приёмы.

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



25.11.2024 09:46:38 25.11.2024 09:47:27 Брель Михаил Программирование - профессионалы (лич. 2024-2025) C. Минное поле 100 Все тесты успешно пройдены source.g131 DelTA4 at NIT0 Win10
25.11.2024 09:31:54 25.11.2024 09:32:19 Брель Михаил Программирование - профессионалы (лич. 2024-2025) B. Атакующие пары 100 Все тесты успешно пройдены source.g131 DelTA4 at NIT0 Win10
25.11.2024 09:26:49 25.11.2024 09:27:14 Брель Михаил Программирование - профессионалы (лич. 2024-2025) A. Поиски Трезубца 100 Все тесты успешно пройдены source.g131 DelTA4 at NIT0 Win10
25.11.2024 09:16:29 25.11.2024 09:18:02 Брель Михаил Программирование - профессионалы (лич. 2024-2025) D. Оптимальное перестроение 100 Все тесты успешно пройдены source.g131 DelTA4 at NIT0 Win10
 
Индекс форума ->Олимпиадное программирование ->Методика подготовки к IOI 2007 - ... 1, 2, 3, ... 19, 20, 21, 22, 23, 24
Time:0,066