[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Олимпиадное программирование ->Тактика на командных олимпиадах
Автор Сообщение
Михаил Долинский

Темы: 1462
Сообщений: 34336

Мой профиль
Гена Короткевич: My strategy at AtCoder & CS Academy
Авторские разборы задач Гены (январь 2018)

Перевод фрагмента:
Мне очень нравится стратегическая часть соревнований по программированию.
Хотя, конечно, решение задач является более важной.

Моя стратегия "кодировать после придумывания решений нескольких задач" - коротко:

1. Прочитать все задачи. Обычно, начиная с последней, но это не важно.
2. Во время чтения каждой из задач понять, что в ней требуется найти, думаю об этом минуту.
3. Начинаю думать о задачах в случайном порядке, часто перескакивая с одной задачи на другую.
4. Пытаюсь добиться прогресса или посмотреть на задачу с другой перспективы каждый раз,  когда возвращаюсь 
   к ней.  Для простых задач это означает решить с первой попытки.
5. Смотрю на таблицу результатов, чтобы понять количество времени, которые типично тратятся участниками на 
   каждую из задач. Это помогает понять, надо ли искать простое решение.
6. В некоторый момент я чувствую себя застрявшим в каждой из задач, которые ещё не решил  (возможно пустое 
   множество).
   Обычно это случается в первой половине контеста. 
   Кодирую придуманные решения задач в любом удобном порядке. 
   Посылаю их.
   Здесь возможны два варианта: 
     - посылать решение каждой задачи в отдельности
     - или посылать все сразу после кодирования всех. 
   Я использую оба. И я думаю, что это не имеет большого значения.
   Во втором варианте плюсы заключаются в следующем:
      - получение WA в одном решении не влияет на меня при кодировании других решений
      - экономия времени на обновлении страницы с протоколом отсылки
7. Стараюсь решить остальные задачи, снова прыгая между задачами, если их более чем одна.
   Но проводя больше времени с каждой задачей. 
   Если придумал решение какой-то задачи - кодирую и отсылаю.

Мне кажется, такая стратегия имеет один значительный недостаток
- увеличение штрафного времени по сравнению со стандартным циклом 
- придумал - реализовал - отослал - перешёл к следующей задаче 

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

Ещё небольшая выгода - не давать информацию другим участникам.
Также выгодой я считаю, что весь проблем сет постоянно находится под контролем.

Михаил Долинский

Темы: 1462
Сообщений: 34336

Мой профиль
Интервью с Геной
 
Индекс форума ->Олимпиадное программирование ->Тактика на командных олимпиадах
Time:0,063