2.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName | 
|---|---|---|---|---|
| 5900f4b41000cf542c50ffc7 | Problema 328: Pesquisa pelo menor custo | 5 | 301985 | problem-328-lowest-cost-search | 
--description--
Estamos tentando encontrar um número oculto selecionado de um conjunto de números inteiros {1, 2, ..., $n$} fazendo perguntas. Cada número (pergunta) que perguntamos, tem um custo igual ao número solicitado e nós recebemos uma de três respostas possíveis:
- "Seu palpite é menor que o número oculto", ou
- "Sim, é isso!", ou
- "Seu palpite é maior que o número oculto".
Dado o valor de n, uma estratégia ideal minimiza o custo total (ou seja, a soma de todas as perguntas feitas) para o pior caso possível. Ex:
Se n = 3, o melhor que podemos fazer é obviamente perguntar o número "2". A resposta nos levará imediatamente a encontrar o número oculto (a um custo total de 2).
Se n = 8, nós podemos decidir usar um tipo de estratégia com "busca binária": nossa primeira questão seria "4" e se o número oculto for maior que 4, precisaremos de uma ou duas questões adicionais. Considere que nossa segunda pergunta seja "6". Se o número oculto ainda for superior a 6, necessitaremos de uma terceira pergunta para discriminar entre 7 e 8. Assim, nossa terceira pergunta será "7" e o custo total para este cenário pior, será 4 + 6 + 7 = \mathbf{\color{red}{17}}.
Podemos melhorar consideravelmente o pior custo para n = 8, tendo "5" como nossa primeira pergunta. Se nos disserem que o número oculto é maior que 5, a nossa segunda pergunta será "7", então saberemos com certeza qual é o número oculto (para um custo total de 5 + 7 = \mathbf{\color{blue}{12}}). Se nos disserem que o número oculto é menor que 5, nossa segunda pergunta será "3". Se for menor que 3, nossa terceira pergunta será "1", dando um custo total de 5 + 3 + 1 = \mathbf{\color{blue}{9}}. Como \mathbf{\color{blue}{12 > 9}}, o pior caso de custo para esta estratégia é 12. Isso é melhor do que o que alcançamos anteriormente com a estratégia de "pesquisa binária"; também é melhor ou igual a qualquer outra estratégia. Então, de fato, acabamos de descrever uma estratégia ideal para n = 8.
Considere C(n) como o pior caso de custo alcançado com uma estratégia ideal para n, como descrito acima. Assim, C(1) = 0, C(2) = 1, C(3) = 2 e C(8) = 12.
Da mesma forma, C(100) = 400 e \displaystyle\sum_{n = 1}^{100} C(n) = 17575.
Encontre \displaystyle\sum_{n = 1}^{200.000} C(n).
--hints--
lowestCostSearch() deve retornar 260511850222.
assert.strictEqual(lowestCostSearch(), 260511850222);
--seed--
--seed-contents--
function lowestCostSearch() {
  return true;
}
lowestCostSearch();
--solutions--
// solution required