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

Автор Slamur, 5 лет назад, По-русски

Недавно прошел отборочный этап на интенсивы в рамках фестиваля 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.

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

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

  • Проголосовать: нравится
  • +18
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

Дело в случаях, когда вероятности победы равны, и нам надо максимизировать вероятность ничьей. Надо либо подбирать эпсилон, либо решать все в интах (точнее — в int128)

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Спасибо большое, я попробую разобраться с этим. Не думал, что будут проблемы с точностью в этом моменте.