QOJ.ac

QOJ

Süre Sınırı: 2 s Bellek Sınırı: 256 MB Toplam puan: 100

#958. Lockout contra tourist

İstatistikler

Você está disputando uma partida de lockout. As regras são simples: é uma competição de um contra um, há $n$ problemas com pontuações variadas, e somente o primeiro participante a obter uma submissão aceita para um problema recebe seus pontos; mesmo que o outro esteja apenas 1 segundo atrasado, ele não recebe ponto algum. Por simplicidade, não incluiremos limites de tempo nem vitórias antecipadas: a partida continua até que cada problema seja resolvido por pelo menos um dos participantes.

Você é muito bom, mas... seu adversário é tourist. É um desastre, eu sei. Será difícil vencer, mas você espera conseguir alguns pontos para salvar as aparências. Se você e tourist trabalharem no mesmo problema, ele vencerá você, com certeza. Mas, se vocês escolherem problemas diferentes, essa será sua chance! Você conseguirá resolver esse problema antes de tourist! Só que então ele entrará em modo de fúria e resolverá instantaneamente todos os problemas restantes. Um problema é melhor que nada, não é?

Vamos formalizar um pouco o processo. A cada vez, você e tourist têm alguns problemas não resolvidos para escolher. Se não houver mais problemas não resolvidos, o jogo termina e você recebe $0$ pontos. Caso contrário, você e tourist devem escolher um problema para trabalhar, sem saber qual problema a outra pessoa escolheu. Se escolherem o mesmo problema, tourist o resolve antes de você e retornamos ao mesmo estado inicial, com menos problemas restantes. Caso contrário, você recebe os pontos do problema que escolheu, mas o jogo termina imediatamente porque tourist resolve todos os problemas restantes instantaneamente.

Você quer maximizar o número de pontos que receberá, e tourist quer minimizá-lo. Qual é o resultado esperado do jogo se você e tourist agirem de maneira ótima?

Entrada

A primeira linha contém um inteiro $n$ ($1 \le n \le 22$): o número de problemas.

A segunda linha contém $n$ inteiros $a_i$ ($1 \le a_i \le 10^9$): a pontuação de cada problema.

Saída

Imprima um número: sua pontuação esperada.

Sua resposta será considerada correta se seu erro absoluto ou relativo não exceder $10^{-6}$.

Formalmente, sejam $a$ sua resposta e $b$ a resposta do júri. Sua resposta será aceita se, e somente se, $\frac{|a-b|}{\max(1,|b|)} \le 10^{-6}$.

Exemplos

Entrada 1

2
6 7

Saída 1

3.2307692307692

Entrada 2

3
1 1 1

Saída 2

0.8333333333333

Entrada 3

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

Saída 3

9.4422713866103

Nota

Observe que, no primeiro exemplo, tourist poderia garantir a vitória na partida escolhendo sempre o segundo problema, e, contra essa estratégia, você poderia escolher sempre o primeiro problema e receber $6$ pontos. Mas tourist jogará de maneira ótima para minimizar sua pontuação esperada, o que às vezes pode significar permitir que você vença a partida.

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#318EditorialOpen题解jianglyView

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.