Preparatório para a OBI - Fase 1 - Aula 1/3
Introdução
Visão geral da seção: Nesta seção, o palestrante introduz a live e fala sobre os tópicos que serão abordados.
Formato e Calendário da Ubi
- A Ubi é dividida em três fases: iniciação, primeira fase e segunda fase.
- As inscrições para a Ubi já estão abertas desde 27 de março e vão até alguns dias antes da primeira prova.
- A primeira fase acontecerá entre 1º e 3 de julho, com duração de duas horas.
- Os resultados da primeira fase serão divulgados no dia 19 de junho.
Como Estudar para a Ubi
- É importante focar na primeira fase, que é mais simples do que as outras duas.
- Após passar na primeira fase, há tempo suficiente para estudar para a segunda fase.
- O mês de julho pode ser utilizado para estudar.
Primeira Fase
Visão geral da seção: Nesta seção, o palestrante detalha como será a realização da primeira fase da Ubi.
Datas e Inscrições
- As inscrições para a primeira fase vão até o dia 31 de maio.
- A prova presencial será realizada na escola do candidato entre os dias 1º e 3 de junho.
- Haverá uma janela de três dias para fazer a prova, das 7h às 20h.
Resultados
- O resultado final da primeira fase será divulgado no dia 19 de junho.
Segunda Fase
Visão geral da seção: Nesta seção, o palestrante fala sobre a segunda fase da Ubi.
Datas
- A segunda fase da modalidade de programação acontecerá no dia 15 de agosto.
- Haverá apenas um dia para realizar a prova.
Importância
- A segunda fase é classificatória e não influencia na premiação.
- A terceira fase é a que vale para ganhar medalha e viagem para semana Olímpica.
Competição Feminina da OBI
Visão geral da seção: Nesta seção, o palestrante fala sobre a competição feminina da Olimpíada Brasileira de Informática (OBI).
Competição Feminina da OBI
- A competição feminina é uma modalidade exclusiva para meninas no ensino médio e fundamental.
- As inscrições para a competição feminina estão abertas para as participantes da OBI.
- Os resultados finais serão divulgados em 16 de outubro, incluindo o quadro de medalhas e os classificados para a semana olímpica.
Preparação para a Terceira Fase
Visão geral da seção: Nesta seção, o palestrante fala sobre como se preparar para a terceira fase da Olimpíada Brasileira de Informática.
Tempo de Estudo
- Os candidatos têm cinco meses para estudar antes da terceira fase.
- Com esforço suficiente, é possível ganhar uma medalha na programação nível Júnior ou nível 1. Na programação nível 2, é possível ganhar um bronze ou prata com muito esforço.
Semana Olímpica
Visão geral da seção: Nesta seção, o palestrante fala sobre a semana olímpica que ocorre após a divulgação dos resultados finais.
Participação na Semana Olímpica
- A semana olímpica é uma oportunidade para os medalhistas se reunirem na Universidade Estadual de Campinas (Unicamp).
- Os participantes têm a chance de aprender com estudantes da Unicamp e colegas de outras faculdades.
- A semana olímpica ocorre no início de dezembro.
Curso de Introdução
Visão geral da seção: Nesta seção, o palestrante fala sobre como fazer o primeiro curso para passar na primeira fase da OAB e apresenta opções de estudo.
Opções de estudo
- Fazer o Primeiro Curso é suficiente para passar na primeira fase.
- O curso de introdução ensina a linguagem C e técnicas de programação.
- O site Nike tem materiais para as Olimpíadas de informática e um roteiro de estudos para cada nível.
- No site do Nike, há comentários sobre provas antigas e indicações de outros sites úteis.
Preparação para a Primeira Fase da OAB
Visão geral da seção: Nesta seção, o palestrante começa a preparação para a primeira fase da OAB com um problema simples.
Problema: Área da Circunferência
- Bino quer calcular a área de uma circunferência. Faça um programa que leia o raio R e imprima a área com duas casas decimais.
- A solução em C++ é explicada passo a passo pelo palestrante.
Precisão de Variáveis
Visão Geral da Seção: Nesta seção, o instrutor explica a diferença entre as variáveis Double e Float e por que é importante usar Double quando precisão é necessária.
Diferença entre Double e Float
- O tipo de variável Double tem mais precisão do que o tipo de variável Float.
- Sempre use Double quando precisão é necessária para evitar erros na solução.
Cálculo da Área da Circunferência
- Para calcular a área da circunferência, leia o raio e declare pi como 3.1416.
- A fórmula para calcular a área da circunferência é pi vezes R ao quadrado.
- Para imprimir a área com duas casas decimais, use "%.2f" no código.
Biblioteca Beatspdc
- A biblioteca Beatspdc pode ser usada para incluir todas as outras bibliotecas juntas em um único comando.
- Usar uma biblioteca como Beatspdc economiza tempo e evita problemas ao declarar várias bibliotecas separadamente.
Aprendizados sobre bibliotecas e precisão
Visão geral da seção: Nesta seção, o palestrante discute a importância de prestar atenção às restrições do problema ao invés de apenas olhar para os exemplos. Ele também fala sobre a inclusão de bibliotecas e como usar a precisão correta.
Bibliotecas
- É importante lembrar que nem sempre só porque o seu código está dando certo nos exemplos ele está correto em geral.
- Preste atenção nas restrições do problema, não apenas na entrada.
- Bibliotecas são conjuntos de funções que você pode usar em seu código.
- Na prática, é melhor incluir todas as bibliotecas necessárias usando
#include<bits/stdc++.h>.
Precisão
- Use
fixedesetprecisionpara definir a precisão desejada ao imprimir valores.
- Para imprimir com duas casas decimais, use
cout << fixed << setprecision(2).
- O número dentro de
setprecision()define quantas casas decimais serão impressas.
Problema: Drone de entrega
Visão geral da seção: Nesta seção, o palestrante apresenta um problema envolvendo drones de entrega e janelas retangulares. Ele explica as restrições do problema e como determinar se uma caixa pode ser entregue através da janela.
Restrições do problema
- A loja está desenvolvendo drones para entrega de caixas com as compras dos clientes.
- Cada caixa tem a forma de um paralelepípedo reto retângulo.
- O drone entregará uma caixa de cada vez, colocando-a diretamente dentro da casa do cliente através de uma janela.
- Todas as janelas do cliente têm o formato retangular e estão totalmente abertas.
- O drone só pode colocar a caixa através da janela quando uma das faces da caixa está paralela à janela.
Determinando se a caixa pode ser entregue
- Dado as dimensões da janela do cliente e as dimensões da caixa, determine se o drone consegue entregar a caixa pela janela.
- Nunca vale a pena pegar o maior lado da caixa e colocá-lo de frente para a janela.
- O drone não pode colocar a caixa meio torta na janela. Ele precisa estar alinhado com uma das faces.
Cálculo das dimensões da caixa
Visão geral da seção: Nesta seção, o palestrante explica como calcular as dimensões da caixa para que ela possa ser instalada em uma janela de forma adequada.
Cálculo das dimensões da caixa
- Para calcular as dimensões da caixa, é necessário remover a maior dimensão e ver se a altura da janela é maior do que a largura ou vice-versa.
- Se a altura for maior do que a largura, a caixa deve ser colocada na direção em que sua altura seja maior do que sua largura.
- Se a largura for maior do que a altura, então a caixa deve ser colocada na direção em que sua largura seja maior do que sua altura.
- É importante fazer esses testes antes de prosseguir com o cálculo das dimensões da caixa.
Implementação no código
- O código começa lendo as três dimensões da caixa (a, b e c) e dispensando a maior delas. Em seguida, verifica-se se b é maior do que A e C ou se C é maior do que A e B usando um sif.
- É importante usar um sif para evitar erros quando todas as três dimensões são iguais.
- Depois de determinar quais são as duas maiores dimensões restantes (D1 e D2), pode-se prosseguir com o cálculo das outras duas dimensões (altura e largura).
Posicionando uma caixa em uma janela
Visão geral da seção: Nesta seção, o palestrante explica como posicionar uma caixa dentro de uma janela com base nas dimensões da caixa e da janela.
Posicionando a caixa em pé
- Se a altura da caixa for maior do que a largura, ela deve ser posicionada em pé.
- A altura da caixa deve ser menor ou igual à altura da janela e a largura deve ser menor ou igual à largura da janela.
- Use swap(D1,D2) para trocar os valores das dimensões, caso necessário.
Posicionando a caixa de lado
- Se a altura da caixa for menor ou igual à largura, ela deve ser posicionada de lado.
- A maior dimensão (D1) deve ser menor ou igual à maior dimensão (altura ou largura) da janela e a segunda maior dimensão (D2) deve ser menor ou igual à segunda maior dimensão (largura ou altura) na janela.
Código em Python para posicionar uma caixa
Visão geral da seção: Nesta seção, o palestrante mostra um exemplo de código em Python para posicionar uma caixa dentro de uma janela com base nas dimensões.
- O código é simples e lê apenas um inteiro.
Drone e Sequência de Números
Visão Geral da Seção: Nesta seção, o palestrante fala sobre dois problemas de programação: um envolvendo drones e outro envolvendo uma sequência de números.
Problema do Drone
- O problema consiste em testar todas as possibilidades de como colocar uma caixa em um drone.
- O código usa vários IFES para testar cada possibilidade.
- A resposta é "S" se alguma das possibilidades funcionar.
- Este problema foi da primeira fase da Uber 2017.
Problema da Sequência de Números
- O problema consiste em calcular a soma de uma sequência de números que são ditos pelo chefe do programador por telefone.
- Às vezes, o chefe diz um número errado e diz "zero" para apagar o último número dito.
- Se ele disser "zero" duas vezes seguidas, os dois últimos números devem ser apagados.
- A entrada é um inteiro n que representa a quantidade total de números ditos pelo chefe. Cada linha subsequente contém o número xi dito pelo chefe.
- Este problema foi apresentado no evento ICPC 2018.
Problema Zero para Cancelar
Visão Geral da Seção: Nesta seção, o palestrante apresenta um problema chamado "Zero para Cancelar" e explica como resolvê-lo usando vetores.
Usando Vetores para Resolver o Problema
- Para resolver o problema, é necessário usar um vetor que mantenha uma lista dos números na sequência.
- O vetor deve ser usado para manter a sequência de números. Quando um número precisa ser adicionado, ele é colocado no final da sequência. Quando um número precisa ser removido, o último número é apagado.
- A sequência pode ser lida uma vez e os números podem ser adicionados ou removidos conforme necessário.
- Se o número for diferente de zero, ele deve ser adicionado ao final da sequência. Caso contrário, o último número deve ser removido usando popback().
- Depois de criar a sequência de números, a soma dos valores na sequência pode ser calculada passando por cada elemento do vetor e somando seus valores.
- O código em C++ é mais curto do que em Python.
Exemplos
- No exemplo dado pelo palestrante, a resposta correta seria 0 porque os números 3 e 4 são removidos antes do zero.
- Em outro exemplo fornecido pelo palestrante, a resposta correta seria 7.
Função em Python para somar lista
Visão geral da seção: Nesta seção, o palestrante discute a criação de uma função simples em Python para somar uma lista.
Criação da função
- A função deve ser criada com a palavra-chave "def" seguida pelo nome da função e pelos parâmetros necessários.
- Dentro da função, é possível usar a função "sum()" do Python para somar os valores na lista.
- É importante lembrar de retornar o resultado da soma no final da função.
Problema OBI 2021 - Primeira Fase P2
Visão geral da seção: Nesta seção, o palestrante discute um problema específico que apareceu na primeira fase da Olimpíada Brasileira de Informática (OBI) em 2021.
Descrição do problema
- O problema envolve a soma dos dígitos de um número inteiro positivo.
- O objetivo é criar um programa que receba um número inteiro positivo como entrada e retorne a soma dos seus dígitos.
- Este problema foi apresentado na primeira fase da OBI em 2021, especificamente na prova P2.
Problema Auto-Similar
Visão geral da seção: Nesta seção, o palestrante discute um problema relacionado à ideia de objetos auto-similares.
Descrição do problema
- Um objeto é considerado auto-similar quando pode ser dividido em partes menores que são semelhantes ao objeto original.
- O problema envolve a identificação de objetos auto-similares com base em uma sequência de números naturais que representam as alturas do objeto.
- A ideia é que a soma dos valores reversos da sequência deve ser igual para o primeiro e último valor, segundo e penúltimo valor, e assim por diante.
- Este problema foi apresentado na Olimpíada Brasileira de Informática (OBI) em 2021.
Desculpe, mas não há transcrição fornecida para que eu possa criar as notas. Por favor, forneça a transcrição e eu ficarei feliz em ajudá-lo a criar as notas.
Declarando a Resposta
Visão geral da seção: Nesta seção, o palestrante explica como declarar a resposta para o problema.
Declarando a resposta
- Começa-se lendo toda a sequência e verificando se todos os valores são iguais.
- Se todos os valores forem iguais, a resposta começa sendo "sim".
- Em seguida, é necessário verificar se há algum par que não satisfaça essa condição. Para isso, usa-se um loop for.
- Se houver algum valor diferente, a resposta passa a ser "não".
- A resposta final é impressa no final do código.
Outra forma de declarar a Resposta
Visão geral da seção: Nesta seção, o palestrante apresenta outra forma de declarar a resposta para o problema.
Declarando a resposta
- Começa-se verificando se em algum momento há uma altura que não seja igual às outras.
- Se houver alguma altura diferente, interrompe-se o código e retorna 0.
- Caso contrário, continua-se até o fim do código e retorna-se 1.
A importância de aprender a linguagem Ser Mais Mais
Seção Resumo: Nesta seção, o palestrante discute a importância de aprender a linguagem Ser Mais Mais em vez de Python para competições de programação.
Por que escolher Ser Mais Mais?
- O palestrante explica que o NEPS ensina Ser Mais Mais e não Python.
- Ele mostra um exemplo de código em que o uso do "return 0" no meio do código faria com que ele parasse antes da execução completa. Isso é importante porque em competições, é necessário ter certeza de que todo o código será executado corretamente.
- O palestrante explica como o uso do "return 0" pode afetar a execução do código e por que isso é importante em competições.
Comparando com Python
- O palestrante compara um exemplo de código em Python com um exemplo em Ser Mais Mais.
- Ele explica como as variáveis são declaradas e usadas no exemplo em Ser Mais Mais.
- Ele destaca novamente a importância da velocidade na execução do código durante as competições.
Aprendendo Ser Mais Mais
- O palestrante menciona que o curso NEPS ensina Ser Mais Mais e não Python.
- Ele enfatiza que aprender Ser mais mais é importante para participar das competições e se classificar para as internacionais.
- Ele menciona que a seletiva para as competições internacionais só aceita Ser Mais Mais e não Python.
Conclusão
- O palestrante conclui que, embora Python seja uma linguagem útil em muitas situações, é importante aprender Ser Mais Mais para competições de programação.
Aprendendo Python para a Olimpíada Brasileira de Informática
Visão geral da seção: Nesta seção, o palestrante incentiva os espectadores a aprender Python usando cursos online e adverte sobre as dificuldades que os candidatos enfrentam na seleção da Olimpíada Brasileira de Informática.
Aprendendo Python para a Olimpíada Brasileira de Informática
- É importante aprender Python para participar da Olimpíada Brasileira de Informática.
- Cursos online como o NEPS e o NIKE podem ajudar no aprendizado.
- Candidatos que não conseguem aprender a tempo acabam tendo dificuldades na seleção.
Encerrando a primeira Live
Visão geral da seção: Nesta seção, o palestrante encerra sua primeira transmissão ao vivo e fala sobre as próximas transmissões.
Encerrando a primeira Live
- Esta é a conclusão da primeira transmissão ao vivo.
- As próximas transmissões serão anunciadas em breve.
Configurando metas de estudo para ganhar medalhas
Visão geral da seção: Nesta seção, o palestrante explica como configurar metas de estudo para ganhar medalhas na plataforma utilizada nas transmissões ao vivo.
Configurando metas de estudo para ganhar medalhas
- É possível configurar metas de estudo na plataforma das transmissões ao vivo.
- Configurar essas metas pode ajudá-lo a ganhar medalhas.
- As próximas transmissões ocorrerão nos próximos sábados no mesmo horário.
- Haverá aulas mensais de preparação para as outras fases da Olimpíada Brasileira de Informática.
Próximas transmissões e apresentação do palestrante
Visão geral da seção: Nesta seção, o palestrante fala sobre as próximas transmissões e faz uma breve apresentação pessoal.
Próximas transmissões e apresentação do palestrante
- As próximas transmissões ocorrerão nos dias 20 e 27 de junho ou julho (não especificado).
- Haverá uma aula especial no dia 3.
- O palestrante é Atos Lobo, um estudante que participou da Olimpíada Brasileira de Informática três vezes em primeiro lugar.
- Ele também irá participar da competição internacional na Hungria.
Encerramento
Visão geral da seção: Nesta seção, o palestrante encerra sua primeira transmissão ao vivo e agradece aos espectadores.
Encerramento
- Esta é a conclusão da primeira transmissão ao vivo.
- Obrigado por assistir.