Preparatório para a OBI - Fase 1 - Aula 2/3
Introdução
Visão geral da seção: Nesta seção, o palestrante introduz a segunda aula de preparação para a Olimpíada Brasileira de Informática (OBI) e recapitula informações importantes da primeira aula.
Recapitulação das informações da primeira aula
- A primeira fase da OBI programação será realizada de 1º a 3 de junho.
- Existem duas maneiras principais de se preparar: os cursos do NEPS no site do Next e o roteiro de estudos preparado pelo palestrante.
- Para passar na primeira fase, é necessário saber programação básica, como introdução e estrutura de dados básicos.
Como se preparar para a OBI
Visão geral da seção: Nesta seção, o palestrante discute as duas principais maneiras pelas quais os participantes podem se preparar para a OBI.
Usando os cursos do NEPS no site do Next
- Os cursos Expert em Algoritmos são recomendados para aqueles que desejam ir bem na OBI.
- Os cursos devem ser seguidos em ordem.
Usando o roteiro de estudos
- O roteiro de estudos foi criado pelo palestrante e está disponível no site Norte.
- Ele fornece uma ordem detalhada das coisas que precisam ser estudadas e quais sites usar para estudá-las.
- Inclui informações sobre como fazer problemas antigos e seguir com as lições em ordem.
Conteúdo necessário para cada nível da OBI
Visão geral da seção: Nesta seção, o palestrante discute o conteúdo necessário para cada nível da OBI.
Nível Júnior
- A primeira fase é principalmente sobre programação básica.
- Os conteúdos necessários são introdução e estrutura de dados básicos.
Nível 1
- A primeira fase é principalmente sobre programação básica.
- Os conteúdos necessários são introdução e estrutura de dados básicos.
Nível 2
- A primeira fase é principalmente sobre programação básica.
- Os conteúdos necessários são introdução e estrutura de dados básicos.
Linguagens de programação na OBI
Visão geral da seção: Nesta seção, o palestrante discute as linguagens de programação que podem ser usadas na OBI.
- Na primeira fase, você pode usar qualquer linguagem que saiba, mesmo que não seja Sermais.
- É possível fazer a primeira fase em uma linguagem diferente e depois transferir para Sermais para as fases posteriores.
- Para a segunda e terceira fases, é necessário saber Sermais.
Conclusão
Visão geral da seção: Nesta seção, o palestrante conclui a aula reiterando os pontos principais discutidos anteriormente.
Introdução
Visão geral da seção: Nesta seção, o palestrante apresenta a segunda fase do exame da OAB e explica que há tempo suficiente para aprender uma nova linguagem antes da próxima fase. Ele também introduz cinco problemas que podem ser úteis para passar na primeira fase.
Problema 1: Cortando notas de dinheiro
Visão geral da seção: Nesta seção, o palestrante apresenta um problema sobre cortar notas de dinheiro em dois pedaços e determinar o valor de cada pedaço.
- Se um dos pedaços possui estritamente mais da metade da área da nota original, então ele vale R$100 e o outro não vale nada.
- Se os dois possuem exatamente metade da área original, nenhum dos dois tem valor.
- O corte deve começar na base a uma distância de B aqui e terminar no topo a uma distância 3 cm a partir do lado esquerdo.
- Os formatos geométricos resultantes são trapézios.
Problema 2: Separando um retângulo em duas partes
Visão geral da seção: Nesta seção, o palestrante apresenta um problema sobre separar um retângulo em duas partes com diferentes dimensões.
- O retângulo é originalmente 160cm por 70cm.
- O corte começa numa distância de B aqui e termina numa distância de t.
- Os formatos geométricos resultantes são trapézios.
Problema 3: Encontrando a altura máxima de um triângulo
Visão geral da seção: Nesta seção, o palestrante apresenta um problema sobre encontrar a altura máxima de um triângulo inscrito em uma circunferência.
- O triângulo é isósceles e tem dois lados iguais a 10.
- A circunferência tem raio 6.
- A altura máxima do triângulo é igual a 8.
Problema 4: Encontrando o menor valor possível
Visão geral da seção: Nesta seção, o palestrante apresenta um problema sobre encontrar o menor valor possível para uma expressão matemática.
- A expressão é (x+1)(y+1)(z+1) = 16.
- Os valores de x, y e z são inteiros positivos.
- O menor valor possível para a expressão é 16.
Problema 5: Encontrando as raízes de uma equação quadrática
Visão geral da seção: Nesta seção, o palestrante apresenta um problema sobre encontrar as raízes de uma equação quadrática.
- A equação é x^2 - 7x +12 =0.
- As raízes da equação são x=4 e x=3.
Cálculo da Área de um Trapézio
Visão Geral da Seção: Nesta seção, o palestrante explica como calcular a área de um trapézio e como determinar qual dos dois lados é maior.
Fórmula para Calcular a Área do Trapézio
- A área do trapézio depende apenas do tamanho das bases e da altura.
- A fórmula para calcular a área de um trapézio com uma altura h, uma base B e outra base T é: área = (B + T)/2 x h ou altura.
Cálculo da Área dos Dois Lados
- Para determinar qual dos dois lados é maior, é necessário calcular a área de cada lado usando a fórmula do trapézio.
- O lado esquerdo tem uma base B e outra base T. A área pode ser calculada usando a fórmula vista anteriormente.
- O lado direito tem uma base menor de 160 - B e outra base maior de 160 - T. A área também pode ser calculada usando a mesma fórmula.
Determinando Qual Lado É Maior
- Para determinar qual dos dois lados é maior, basta comparar as áreas calculadas anteriormente.
- Se o lado esquerdo for maior que o direito, imprima "1". Caso contrário, imprima "2".
Simplificando o Código
Visão geral da seção: Nesta seção, o palestrante discute como simplificar o código para um problema específico.
Simplificação do código
- O código é testar se área aí é maior do que a área D.
- É possível simplificar a conta removendo alguns termos desnecessários.
- A altura dos dois trapézios são iguais, então só precisamos verificar qual das duas bases é maior.
- É comum ter casos de teste menores para ajudar a resolver problemas mais complexos.
Problema dos Emoticons
Visão geral da seção: Nesta seção, o palestrante apresenta um problema relacionado à análise de emoticons em uma mensagem.
Definindo o sentimento expresso na mensagem
- O sentimento expresso em uma mensagem pode ser definido pela quantidade de carinhas felizes e tristes presentes nela.
- Se a quantidade de carinhas felizes for maior ou igual à quantidade de carinhas tristes, a mensagem é considerada feliz. Se a quantidade de carinhas tristes for maior, ela é considerada chateada. Caso contrário, ela é neutra.
- A entrada consiste em uma única linha contendo uma mensagem como cadeia de caracteres. A saída deve indicar se a mensagem é neutra, feliz ou chateada.
Entendendo mensagens com emojis
Visão geral da seção: Nesta seção, o palestrante explica como entender mensagens que contêm emojis e como determinar se a mensagem é positiva, negativa ou neutra.
Como entender mensagens com emojis
- As mensagens podem ter espaços no meio, então não é possível lê-las como uma string única.
- O número de carinhas felizes e tristes em uma mensagem determina se ela é positiva, negativa ou neutra.
- As palavras na mensagem não importam tanto quanto as carinhas felizes e tristes.
Resolvendo o problema
- Para resolver o problema de ler a sequência de caracteres completa, use o comando Get Line seguido pela variável que você usará para ler a linha inteira.
- É importante lembrar desses comandos menos comuns para quando eles aparecerem em um teste.
Dicas finais
- Não escreva todo o cabeçalho desde o início. Copie e cole códigos anteriores e edite-os conforme necessário.
- Pratique esses conceitos diariamente para memorizá-los antes do dia do teste.
Contando Carinhas Felizes e Tristes
Visão geral da seção: Nesta seção, o palestrante explica como contar quantas carinhas felizes e tristes existem em uma string.
Contagem de Carinhas Felizes e Tristes
- Para contar as carinhas felizes e tristes em uma string, é necessário manter duas variáveis: "feliz" e "triste".
- Inicialmente, ambas as variáveis são definidas como zero.
- Em seguida, percorre-se a string verificando se há três posições consecutivas com uma carinha feliz ou triste.
- Se houver uma carinha feliz nas três posições consecutivas (por exemplo: :) : -)), adiciona-se 1 à variável "feliz". Se houver uma carinha triste nas três posições consecutivas (por exemplo: :( : -( ), adiciona-se 1 à variável "triste".
- Depois de percorrer toda a string, verifica-se qual das duas variáveis é maior. Se a variável "feliz" for maior que a variável "triste", então a resposta é "divertido". Se a variável "triste" for maior que a variável "feliz", então a resposta é "chateado". Se ambas as variáveis forem iguais, então a resposta é "neutro".
Cuidado com o Ponto Size Menos Dois
Visão Geral da Seção: Nesta seção, é explicado que o ponto size menos dois não deve ser menor que 10 pontos, pois isso pode causar problemas. É importante tomar cuidado com esse ponto para evitar problemas.
- O ponto size menos dois não deve ser menor que 10 pontos.
- Esse número não fica negativo por padrão porque ele é um designer.
- É importante tomar cuidado com esse ponto para evitar problemas.
Recomendações de Estudo
Visão Geral da Seção: Nesta seção, são apresentadas duas opções de estudo recomendadas: a trilha de programação do Next e o roteiro de estudos do site do Nike. Ambas as opções são indicadas para quem está começando agora e deseja aprender informática.
Trilha de Programação do Next
- A trilha de programação do Next pode ser encontrada no site do Maps.
- A trilha recomendada é a "Expert Algoritmos".
- É possível seguir essa trilha para aprender programação.
Roteiro de Estudos do Site do Nike
- O roteiro de estudos pode ser encontrado na área de informática do site do Nike.
- O roteiro foi criado pelo próprio palestrante e é bem completo.
- Começa desde programação básica até cursos mais avançados.
- Fazer vários problemas por dia é suficiente para passar na Ubi em duas semanas.
Problema das Camisetas da Olimpíada
Visão Geral da Seção: Nesta seção, é apresentado o problema das camisetas da Olimpíada Municipal de programação. A empresa confeccionou camisetas para os melhores colocados, mas pode ter se enganado na quantidade de camisetas para cada tamanho. É necessário determinar se todos os premiados receberam camisetas do tamanho escolhido.
- A Olimpíada Municipal de programação distribuiu camisetas para os melhores colocados.
- Os premiados informaram um tamanho preferido entre pequeno e médio.
- Foram produzidas camisetas suficientes para todos os premiados, mas não necessariamente do tamanho preferido.
- É necessário determinar se todos os premiados receberam camisetas do tamanho escolhido.
Declarando constantes e lendo valores
Visão geral da seção: Nesta seção, o palestrante explica como declarar constantes e ler valores em um código.
Declarando a constante MaxN
- Declara-se a constante MaxN para evitar ter que escrever várias vezes o valor de n.
- Em vez de escrever tamanho mil, declara-se MaxN e atribui-se o valor de n a ela.
Contador para quantidade de camisetas
- Cria-se um contador para a quantidade de camisetas pequenas (P) e médias (M).
- Declara-se P e M como zero.
- Se uma pessoa prefere uma camisa pequena, incrementa-se P em 1. Se prefere uma camisa média, incrementa-se M em 1.
Lendo quantidades produzidas
- Lê-se as quantidades produzidas das camisas pequenas (p) e médias (m).
- Verifica-se se p é maior ou igual à quantidade de pessoas que querem camisas pequenas (P), e se m é maior ou igual à quantidade de pessoas que querem camisas médias (M).
- Se ambas as condições forem verdadeiras, imprime "OK". Caso contrário, imprime "ERRO".
Praticando problemas da OBI
Visão geral da seção: Nesta seção, o palestrante sugere praticar problemas antigos da Olimpíada Brasileira de Informática (OBI) para aprimorar as habilidades de programação.
Praticando para a terceira fase da OBI
- Para praticar para a terceira fase da OBI, é recomendado acessar os problemas antigos no site da OBI.
- É possível pesquisar por problemas específicos, como os da primeira fase.
A Sequência Secreta
Visão geral da seção: Nesta seção, o palestrante fala sobre um problema chamado "Sequência Secreta" e explica como resolvê-lo.
O Problema da Sequência Secreta
- O problema é que há uma sequência de números desenhados no chão em frente à Classe Imperial.
- A sequência começa e termina com o número 1 e apenas os números 1 e 2 aparecem nela.
- Existem várias teorias sobre o significado da sequência, mas ninguém sabe ao certo qual é a resposta correta.
- O objetivo do problema é encontrar a maior quantidade possível de valores que podem ser circulados na sequência sem que haja dois números iguais consecutivos marcados.
Algoritmo Guloso
- Uma solução para o problema é usar um algoritmo guloso, que sempre toma a decisão mais vantajosa no momento.
- O algoritmo guloso para este problema envolve marcar todos os números "1" na sequência e, em seguida, marcar todos os "2" que não estão adjacentes a outro "2".
- Esse algoritmo pode não fornecer a solução ótima em todos os casos, mas funciona bem para muitas instâncias do problema.
Algoritmo Guloso
Visão geral da seção: Nesta seção, o palestrante explica como funciona o algoritmo guloso e como ele pode ser aplicado para resolver problemas de sequência numérica.
Como funciona o algoritmo guloso
- O objetivo é marcar todos os números diferentes em uma sequência.
- Quando há dois números consecutivos iguais, apenas um deles pode ser marcado.
- Comece marcando o primeiro número da sequência.
- Em seguida, marque qualquer número subsequente que seja diferente do último número marcado.
- A resposta final será a quantidade total de números marcados.
Lidando com números consecutivos iguais
- Quando há uma sequência de dois ou mais números consecutivos iguais, apenas um deles pode ser marcado.
- Apague os outros números repetidos na sequência para obter uma lista de números únicos que podem ser marcados.
Implementação do algoritmo guloso em código
- Leia a sequência numérica e comece marcando o primeiro número.
- Verifique cada número subsequente e marque-o se for diferente do último número marcado.
- Aumente a resposta em 1 sempre que um novo número for marcado.
- Imprima a resposta final no final da iteração.
Testando o algoritmo guloso
O palestrante testa o algoritmo com uma sequência numérica específica e mostra como ele funciona na prática.
Copiando e Colando
Visão geral da seção: Nesta seção, o apresentador mostra como copiar e colar um código que funcionou em outro caso.
Copiando e Colando
- O apresentador demonstra como copiar um código que funcionou em outro caso.
- Ele encerra a sessão dizendo que este foi o último problema da live de hoje e convida os espectadores a entrar no Discord do NEPS para tirar dúvidas. Ele fornece um link para acessar o Discord.
- Os espectadores podem entrar no Discord do NEPS para fazer perguntas ou obter ajuda adicional.
Próxima Aula
Visão geral da seção: Nesta seção, o apresentador anuncia a data da próxima aula.
Próxima Aula
- O apresentador anuncia que a próxima aula será no dia 27.