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

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

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

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

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

Мой профиль
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 своих тестов?
Михаил Долинский

Темы: 2010
Сообщений: 47873

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

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


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


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


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

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

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

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

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

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

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

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

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

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

Темы: 2010
Сообщений: 47873

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вроде бы и всё, что я хотел сказать. Если мы это всё исправим, то мы будем пусть и не первыми, но очень к этому близки.
 
Индекс форума ->Олимпиадное программирование ->Методика подготовки к IOI 2007 - ... 1, 2, 3, ... 19, 20, 21
Time:0,049