Блог пользователя AlexSkidanov

Автор AlexSkidanov, 14 лет назад, По-русски
Наконец-то мне удалось заставить себя проснуться в 7 утра, и я смог написать первый в своей жизни раунд по крутой системе.
Как я и ожидал, система очень крутая :о)
Очень понравилось то, что когда становится тяжело думать, можно отдохнуть, прогулявшись по решениям в комнате.

Стало интересно, какие есть стратегии на таких раундах.
На первый взгляд, после того, как задача сдана, надо сразу начинать по ней ломать -- потом эти легкие взломы уже кто-то заберет. Пока другая задача не открыта, время по ней, как я понимаю, не течет. Шанс, что в конце не хватит пяти минут, тоже ничтожно мал. А главное - каждый взлом в начале заметно поднимает настроение.
Поэтому я так и играл.
Из минусов я вижу один - так как я оттягиваю свою сдачу сложных задач, я могу потерять простые взломы по ним. Но казалось бы,
а) Где шанс получить простой влом выше - на задаче А или на задаче C? Очевидно, на задаче А их должно быть больше.
б) Я предполагаю, что даже с учетом пяти минут на взломы после каждой сданой задачи, я все равно сдам сложную задачу быстрее среднего участника, которого я мог бы взломать.
в) Когда я сдам задачу С, я очень сомневаюсь, что я захочу ее сразу залочить.

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

Вот поэтому и встал вопрос - а по какой стратегии играете вы, и, главное, почему?
  • Проголосовать: нравится
  • +21
  • Проголосовать: не нравится

14 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Насколько я понимаю - время по всем задачам идет одновременно (независимо, открыл ты ее или нет).
Поэтому так сразу непонятно, что выгоднее после того как сдал задачку: челенджить или еще писать задачки.
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Понятно, я так и подумал, меня потом смутило, что в мониторе были люди, сдавшие быстрее, но получившие меньше очков. Не учел, что это были пересдачи.
    Тогда получается более менее сбалансировано -- теряешь немного на потеряном времени, получаешь больше на взломах.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
> Пока другая задача не открыта, время по ней, как я понимаю, не течет.
Течет по всем задачам, http://codeforces.net/blog/entry/456 тут написано про это.

Думается, что хорошая стратегия - примерно в 0.30-0.50 быстро просмотреть первые две задачки на предмет взломов, пока остальные скорее всего будут писать C, D.
Еще и от задач многое зависит, и от комнаты твоей. Сегодня можно было B поломать только на 64-битном типе данных, а разбираться в if-ах в A - терять много времени.
Но я тоже, как и большинство, сначала решал все, что мог, а потом ломал. Видимо, так психологически легче.
14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Я был в комнате Геннадия. Он первый сдал 4-ую и стал всех ломать по ней, все совершали в ней одну и ту же ошибку. Мне пришлось довольствоваться лишь неочевидным челенжем по третьей задаче :(
То что можно было ломать только B - неверно, C можно было ломать по отрицательному ответу, D по неправильному алгоритму.
14 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Моя тактика предельно проста: я решаю чисто ради себя и чтобы попрограммировать, lock & hack оставляю другим. Тем не менее, чисто развлечения ради, на последнем раунде специально заслал вероятностное решение на задачу D, чтобы на нем потеряли баллы все желающие.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
zaminusuyte menya plz!
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Ну, я пока не такой опытный, поэтому жду чтобы мою стратегию закритиковали, не стесняйтесь, это мне поможет в дальнейшем развитии:) Я решаю таким образом: сдаю задачи пока сдаются. Если я в течении 5 минут после сдачи предыдущей задачи я сумел придумать следующую-то я ее решаю(у меня есть еще один минус в решении: если я прочитал задачу и придумал какое-то решение, я не читаю другие задачи а пишу эту-даже если писать достаточно долго). Потом я еще раз перечитываю свои коды на предмет нахождения багов и случаев которые не учитываются, придумываю какие-то тесты на крайние и частные случаи и лишь потом ухожу во взломы-надо отметить что с уже готовыми тестами. Правда у меня пока возникают проблемы с чтением чужого кода-могу его читать долго и не всегда успешно. К примеру в том раунде который я выиграл я отослал сначала 4 задачи, потом пытался и не смог придумать решение 5-й задачи(это 49 раунд, там ограничение 10, и я, честно признаться, думал скорее о перестановках и meet-in-the-middle, или масочках по ребрам и опять-таки meet-in-the-middle, хотя это уже врядли прошло по TL, а не о масочках за 2^(2*n)), перечитал свои коды и по очереди стал их блокировать. Но вот в чем палево-в моей комнате было, кроме моего, послано еще 6-7 решений по B и только мое прошло системные тесты. Я перечитал все эти решения, но взломал только 2, совершил еще 2 неверных хака(опять-таки потому что читать не умею-не увидел где обрабатывается конкретный случай), да и один хак я подумал уйдет в ТЛ а на самом деле было ВА из-за переполнения. К слову, на переполнение было еще 5 посылок у других участников, но я не акцентировался на этом, а пытался ломать на частные случаи. 
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вообще я писал вчера тоже первый раз :) но впечатления были примерно такие - похоже как пишешь квал на ТС - тоже в комнате были люди которые пытаются решить задачу за O( n ^ 2 ) при n = 100K. Или не проверяющие крайние тесты. Хотя я сам сделал глупый баг в А, но честно хакинг увлек) 9 сломанных решений покрывают неудачу по 1ой и еще дают бонус на высокое место. Мне кажется, что на раунде трениться или качаться не получится, а вот получить фан - только так) Но это только мое мнение)