Comentário NOIC OBI 2022 - Fase 2 - Programação Nível 1

OBI 2022 - Fase 2 - Programação Nível 1

Para se preparar para a OBI, confira o nosso Roteiro de Estudos, nele você vai encontrar um direcionamento completo de como estudar!

Para conferir a prova na íntegra, clique aqui.

Pirâmide

Escrito por Enzo Dantas

Conhecimento prévio necessário:

Ao visualizar a pirâmide em 3D, a ideia mais intuitiva é construir a pirâmide camada por camada. Começamos pela base da pirâmide e vamos subindo, adicionando um bloco em cada posição de cada camada. Cada camada tem cerca de N^2 blocos e temos N/2 camadas, então a complexidade final fica O(N^3). Como N=100, essa solução é rápida o suficiente.

Confira o código para melhor entendimento

 

Entretanto, existe uma solução mais rápida em O(N^2). É interessante que o leitor tente achar essa solução antes de ler o restante do editorial. Ao analisar casos pequenos, percebe-se o seguinte padrão: a altura de uma posição qualquer é a a distância da posição a uma das quatro bordas da pirâmide (a menor entre as quatro distâncias). O código consiste em percorrer todas as posições e fazer o mínimo entre as 4 distâncias.

Confira o código para melhor entendimento

Tanque de Combustível

Escrito por Vitor Veiga

Conhecimento prévio necessário:

No problema queremos calcular quanta gasolina é preciso comprar para concluir uma viagem. São dados o número de quilômetros por litro de gasolina C, quantos quilômetros faltam para chegar no destino D, e quantos litros de gasolina já estão no tanque T. Assim, é fácil ver que a parte mais difícil desse problema é a matemática. Achando a fórmula para a resposta, o código fica muito simples.

Temos que o número de quilômetros que conseguimos rodar sem comprar nada de combustível, ou seja, o que conseguimos rodar só com o combustível que já está no tanque, será igual a C * T. Agora, basta calcular quantos quilômetros faltam tirando os que já podem ser rodados com o tanque e depois converter esse valor para litros dividindo o resultado por C.

Terminaremos com a seguinte equação: \frac{D - (C*T)}{C}, quantos quilômetros faltam para chegar ao destino menos a quantidade de quilômetros que podemos correr sem comprar combustível dividido pela quantidade de quilômetros que são corridos com um litro. Caso seja possível percorrer todo o percurso só com a gasolina que já está no tanque, não é preciso comprar mais nada.

Clique aqui para conferir o código.

Câmeras

Escrito por Enzo Dantas

Conhecimento prévio necessário:

Primeiramente, iremos construir a matriz N\times{M} e marcar quais posições são vigiadas por câmeras e quais estão livres. Se uma câmera posicionada em (i, j) está apontada para o Oeste, por exemplo, vamos marcar todas as posições a direita de (i, j) como vigiadas (todas as posições (i, k) | j\leq{k}\leq{N}). Em seguida, vamos fazer uma DFS começando do (1, 1) e vamos conferir se a DFS chega na posição (N, M).

Confira o código