QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#958. Lockout vs tourist

Statistics

Вы играете в матч формата lockout. Правила просты: это соревнование 1 на 1, есть $n$ задач с различной стоимостью в баллах. Только первый участник, сдавший задачу, получает баллы за неё; даже если второй участник опоздает всего на 1 секунду, он не получит ничего. Для простоты мы не будем учитывать ограничения по времени или досрочные победы: матч продолжается до тех пор, пока каждая задача не будет решена хотя бы одним из участников.

Вы довольно хороши, но... вам противостоит tourist. Это катастрофа, я знаю. Будет сложно победить, но вы надеетесь вырвать хоть сколько-то баллов, чтобы сохранить лицо. Если вы и tourist будете работать над одной и той же задачей, он, конечно, победит вас. Но если вы выберете разные задачи, то это ваш шанс! Вы сможете решить эту задачу раньше, чем tourist! Но после этого он перейдет в режим «берсерка» и мгновенно решит все оставшиеся задачи. Одна задача лучше, чем ничего, не так ли?

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

Вы хотите максимизировать количество баллов, которые вы получите, а tourist хочет их минимизировать. Каков ожидаемый результат игры, если и вы, и tourist играете оптимально?

Входные данные

Первая строка содержит одно целое число $n$ ($1 \le n \le 22$) — количество задач. Вторая строка содержит $n$ целых чисел $a_i$ ($1 \le a_i \le 10^9$) — стоимость каждой задачи.

Выходные данные

Выведите одно число — ваш ожидаемый счет. Ваш ответ считается верным, если его абсолютная или относительная погрешность не превышает $10^{-6}$. Формально, пусть ваш ответ равен $a$, а ответ жюри — $b$. Ваш ответ принимается, если и только если $\frac{|a-b|}{\max(1, |b|)} \le 10^{-6}$.

Примеры

Входные данные 1

2
6 7

Выходные данные 1

3.2307692307692

Входные данные 2

3
1 1 1

Выходные данные 2

0.8333333333333

Входные данные 3

11
1 2 3 4 5 6 7 8 9 10 11

Выходные данные 3

9.4422713866103

Примечание

Заметьте, что в первом примере tourist мог бы гарантированно выиграть матч, всегда выбирая вторую задачу, и против такой стратегии вы могли бы всегда выбирать первую задачу и получить 6 баллов. Но tourist будет играть оптимально, чтобы минимизировать ваш ожидаемый счет, что иногда может означать позволение вам выиграть матч.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#318EditorialOpen题解jiangly2025-12-14 07:04:13View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.