Victor Sena Molero
Distância entre pontos
Distância entre ponto e segmento
Inteiro n e n pontos do polígono (x,y)
Inteiro m e m pontos fora do polígono
Parâmetro n | Parâmetro m | Tempo de execução |
---|---|---|
100 | 100 | 0.007s |
1000 | 1000 | 0.169s |
10000 | 10000 | 16s |
Calcular, para cada ponto, a distância entre ele e cada um dos n segmentos.
Cada aresta tem uma região.
Como eu descubro se um ponto está numa região?
Vamos descobrir quem está em qual região.
Sempre vale a pena usar três valores consecutivos para formar um triângulo
Ao invés de testar todas as triplas, testar apenas as triplas consecutivas
Bem melhor!
Porém conseguimos melhorar ainda mais...
Parâmetro n | Parâmetro m | Tempo de execução |
---|---|---|
100 | 100 | 0,0001s |
1000 | 100 | 0,01s |
10000 | 1000 | 1s |
100000 | 100000 | 100s |
No pior dos casos, os números serão a sequência de fibonacci.
1, 1, 2, 3, 5, 8, 13, ...
No pior dos casos, os números serão a sequência de fibonacci.
1, 1, 2, 3, 5, 8, 13, ...
Mas como essa sequência cresce muito rápido, no seu 45º número eles já estouram o limite de 10⁹ para cada valor da sequência
Para cada pergunta do Sena, apenas testamos as últimas 45 triplas contínuas.
Parâmetro n* | Parâmetro m | Tempo de execução |
---|---|---|
1000 | 10000 | 0,001s |
100000 | 10000 | 0,001s |
100000 | 1000000 | 0,1s |
Obs: Esta solução nem depende mais do parâmetro n pro cálculo do seu tempo de execução
Venham pra Maratona