Slamur's blog

By Slamur, 5 years ago, In Russian

Недавно прошел отборочный этап на интенсивы в рамках фестиваля RuCode 2020: https://www.rucode.net/

Я попробовал прорешать все задачи отбора (ссылка на условия) и у меня возник затык на задаче L.

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

Вопрос, в основном, к решавшим данный контест и решившим задачу L (про битву двух команд магов).

Я написал решение динамическим программированием по битмаскам:

dp[номер текущего мага][маска живых в текущей команде][маска живых в команде противника] = (вероятность победы текущей команды, вероятность ничьей для текущей команды).

Чтобы вычислить ответ, я перебираю всех живых магов противника, для каждого вычисляю динамику в случае, если в него попали и если нет, после чего считаю суммарные вероятности победы/ничьей и сравниваю с оптимальным вариантом.

Решение падает на 13 тесте с неправильным ответом (на всякий случай уточню, что уже с 4 теста N = 8). Вот ссылка на решение: https://ideone.com/TuAlnY

У меня нет идей какого-либо стресса, так как само решение уже переборное.

Я пробовал ставить fixed вывод — 2/6/10/15 знаков после запятой — вердикт тот же.

Пробовал long double — вердикт тот же.

Даже пробовал смотреть видео с разбором в группе ВК "Moscow Workshops" — оно закончился после разбора задачи K.

Просто, в отличие от других задач, я не особо понимаю, как вообще искать ошибку в решении для данной задачи.

Заранее спасибо.

  • Vote: I like it
  • +18
  • Vote: I do not like it