Temos uma lista ordenada de comprimentos laterais que podem ser usados para formar um polígono. Existem tais valores ( ).
Agora precisamos descobrir se podemos usar 10 desses valores para formar um polígono convexo não degenerado.
Como abordamos isso? Qualquer coisa na ordem de é aceitável. Melhor se possível. Preciso da idéia geral de como proceder, das propriedades dos polígonos convexos que podem ser explorados aqui, etc.
Respostas:
Prova. Aqui .
Prova. Aqui . (observe que a prova aqui requer matemática avançada e também prova o teorema 1)
O problema é reduzido para:
Um algoritmo simples: verifique se é uma solução para cada . Se nenhum deles funcionar, não haverá solução.umaEu, ... ,umai + k - 1 1 ≤ i ≤ n - k + 1
Prova. Se tivermos qualquer solução , encontre o maior , de modo que (ex .: existe uma lacuna). Se não existe essa lacuna, estamos prontos. Se houver, também é uma solução. (intuitivamente, usamos o elemento maior na lacuna e removemos o menor elemento). Podemos repetir essa etapa (no máximo vezes) e preencher todas as lacunas. Eventualmente, produzimos uma solução do formato para alguns .umaEu1 1, ... ,umaEuk j umaEuj + 1-umaEuj> 1 umaEu2, ... ,umaEuj,umaEuj + 1- 1,umaEuj + 1, ... ,umaEuk k - 1 umaEuk- k + 1 ,umaEuk- k , ... ,umaEuk- 1 ,umaEuk Eu
O algoritmo pode ser feito ingenuamente no tempo . Talvez haja uma maneira mais inteligente de fazer isso.O ( k n )
Uma questão interessante de acompanhamento:
fonte