TGViewer
Боря дорешивает Боря дорешивает @bminaiev_upsolving · 556 subscribers
Post #7 715
DragonByte Final 2026. I.

https://www.wincentdragonbyte.com/archive/finals2026/I/statement

Прикольная оптимизационная задача. Вам даны две колоды карт с различными числами от 1 до 1000. Вы играете в пьяницу. Каждый раз, когда кладете очередные две карты вниз колоды, можно выбрать в каком порядке их положить. Нужно выбирать так, чтобы игра закончилась как можно быстрее. Дано 1000 тестов, и скор зависит от максимальной длины ответа. Если все ответы меньше 7500 действий — полный балл. Если есть хотя бы один ответ длиннее 175000, то 0 баллов.

Во время контеста большинство участников, которые отправили эту задачу, получили скор в районе 40-50 баллов. Максимальный скор был 60.83. Расскажу как можно получить 70 баллов стандартными средствами вообще не думая про суть задачи.

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

Давайте в 99% случаев класть большую карту, а в 1% меньшую. Такое решение проходит какие-то тесты, но не проходит другие. Давайте для каждого теста будем перебирать randseed пока не найдем такой, который решает тест за 30000 операций. Такое решение я написал на контесте и получил ~55 баллов.

Давайте опустим границу до 23000 операций. Придется подождать чуть дольше, возможно распараллелить как в предыдущем посте, но так можно получить уже ~64 балла.

Воспользуемся стандартным трюком из оптимизационных контестов. Запишем последовательность наших действий как строку из 0 и 1. Поменяем случайную позицию. Если это привело к лучшему решению, то сохраним, иначе отменим. Будем так делать пока не придем в ситуацию, где никакое изменение не помогает. Если действий стало меньше 19000 — отлично, иначе попробуем с другого randseed. Немного подождем и у нас 70 баллов!
Wincentdragonbyte Wincent DragonByte | I: Infinite War? Compete against the Smartest Engineers in Europe. Show off your coding skills in our biggest challenge yet.
  • 🔥 6
  • 😁 3
  • ❤ 1
  • 💩 1
More from @bminaiev_upsolving
  1. Oct 12, 2026Post #17
  2. Oct 4, 2026Grand Prix of EPS. H. https://contest.ucup.ac/contest/4207/problem/21380 Если убрать все д…
  3. Sep 30, 202647/100. Чтобы в предыдущей задаче посчитать ответ быстрее чем за квадрат надо сделать два…
  4. Sep 30, 2026Оказывается n-е число Каталана можно считать не только как C(2 * n, n) / (n + 1), но и как…
  5. Sep 30, 202646.5/100 https://codeforces.com/contest/2268/problem/E После скучной части про комбинатори…
  6. Sep 28, 2026Вообще прикольный скилл смотреть на perf report и уметь ускорять код в 10 раз чисто механи…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →